laravel jwt의 만료 시간을 동적으로 설정합니다.
안녕하세요 저는 앞 끝에 각진 js를 사용하고 있고, 뒤 끝에 라라벨을 사용하고 있습니다. tymon jwt library.저는 jwt 인증을 사용하고 있습니다.웹 앱에서 나를 기억해 주는 기능을 만들고 싶습니다.laravel 'config/jwt.php'에서 토큰 만료 시간을 설정하려면 'ttl'을 봅니다.
/*
|--------------------------------------------------------------------------
| JWT time to live
|--------------------------------------------------------------------------
|
| Specify the length of time (in minutes) that the token will be valid for.
| Defaults to 1 hour
|
*/
'ttl' => 60,
기본적으로 1시간입니다.하지만 로그인하는 동안 사용자 클릭이 나를 기억한다면 이것을 1주일로 동적으로 변경하고 싶습니다.어떻게 하면 동적으로 바꿀 수 있을까요?감사해요.
추가할 수 있습니다.exp
다음과 같은 커스텀 클레임으로서.
$token = JWTAuth::attempt($credentials, ['exp' => Carbon\Carbon::now()->addDays(7)->timestamp]);
위의 코드는 7일 후에 만료되는 토큰을 만듭니다.사용하지 않으셔도 됩니다.Carbon
유닉스 타임스탬프만 있으면 돼요.Carbon
라라벨에 내장된 이래로 단순화를 위해 여기에 있습니다.
사용가능JWTFactory
(1.0 버전)
$myTTL = 30; //minutes
JWTAuth::factory()->setTTL($myTTL);
$token = JWTAuth::attempt($credentials);
필요한 만료 시간을 사용하여 JWT 토큰을 생성하려면 다음 작업을 수행할 수 있습니다.
JWTAuth::customClaims(['exp' => Carbon\Carbon::now()->addDays(2)->timestamp])
->fromUser($user);
100% 확신할 수는 없지만, 만약 당신이 당신의 영역 안에서 설정한다면 어떻게 될까요?AppServiceProvider@register
구성:
config()->set('jwt.ttl', 60*60*7);
또는 전면부를 포함한 경우:
Config::set('jwt.ttl', 60*60*7);
동적으로 설정하는 이유는 무엇입니까?또는 구성에서 퍼블리싱을 사용하지 않는 경우(퍼블리싱하지 않는 경우)config/jwt.php
)?
편집:
또 다른 해결책은 당신의 것을 통해 설정하는 것일 것입니다..env
파일:
config/jwt.php
// set the default TTL to one week if the .env file does not contain a `JWT_TTL` var
'ttl' => env('JWT_TTL', 60*60*7),
그리고 안에.env
:
JWT_TTL=3600
위의 어떤 답변도 저에게 통하지 않았습니다.저는 그럭저럭 이렇게 할 수 있었습니다.
$ttl_in_minutes = 60*24*100;
// The parameter passed to the auth helper should match what is present in config/auth.php
if($request->input('remember')) auth('api')->factory()->setTTL($ttl_in_minutes);
타이몬 JWT v 1.0
사용자 로그인을 시도할 때 기본 ttl을 재정의할 수 있습니다.
if (! $token = auth()->setTTL(1)->attempt($credentials)) {
return response()->json(['message' => 'Unauthorized user'], 401);
}
config/jwt.php를 변경하지 않고 토큰 ttl을 재정의합니다.
$token = auth()-> setTTL(7200)-> 시도($credentials);
JWT 토큰을 생성하면서 토큰 만료 시간을 설정할 수 있습니다.토큰 파라미터에서 설정할 수 있습니다.예를들면
$token = array(
"iss" => "http://example.com",
"aud" => "http://example.com",
"exp" => {YOUR_EXPIRY_TIME}
);
$jwt=new JWT();
$JWT_TOKEN=$jwt->encode($token, {YOUR_KEY});
새 토큰은 해당 만료 시간과 함께 생성됩니다.
JWT 버전 1.0.0-rc.2의 경우 config/jwt.php의 설명서에 설명되어 있습니다.
참고로: ......만료되지 않는 토큰을 생성하도록 null로 설정할 수도 있습니다. 어떤 사람들은 모바일 앱을 위해 이런 행동을 원할 수도 있습니다. 이는 특별히 권장되지 않으므로 필요한 경우 토큰을 취소할 수 있는 적절한 시스템이 있는지 확인합니다. 공지사항: 이 값을 null로 설정하면 'required_claims' 목록에서 'exp' 요소를 제거해야 합니다.
'ttl' => env('JWT_TTL', 60) meaning we must set 60 to null
'required_claims' => [
'iss',
'iat',
// 'exp', <- remove this
'nbf',
'sub',
'jti',
],
다음을 사용하여 토큰 만료를 동적으로 설정할 수 있습니다.
JWTAuth::factory()->setTTL($expirationInMinutes);
JWTAuth::attempt($credentials)
최신 버전에서는 아래 코드가 작동하지 않습니다.
$token = JWTAuth::attempt($credentials, ['exp' => Carbon\Carbon::now()->addDays(7)->timestamp]);
그렇게 할 수 있니
$token = auth('api')->setTTL((AuthController::EXPIRE_IN_DAYS * AuthController::MINUTES_IN_DAY))->attempt($credentials);
데이터 페이로드 가져오기
$data = JWTAuth::decode(new Token( $token))->toArray();
{
"iss": "",
"iat": ,
"exp": ,
"nbf": ,
"jti": "",
"sub": ,
"prv": ""
}
response("Success",'LOGIN_SUCCESS',[
'access_token' => $token,
'token_type' => 'bearer',
'expires_in' => $data['exp']
]);
Laravel auth 토큰 만료 시간
SESSION_LIFETIME=10080
기본값 120min in session.php
언급URL : https://stackoverflow.com/questions/41141063/set-expiry-time-for-laravel-jwt-dynamically
'programing' 카테고리의 다른 글
Maxscale이 router_options=master(slave/마스터 복제)가 있는 슬레이브에 쓰고 있으며 수신기가 중지되었습니다. (0) | 2023.10.04 |
---|---|
단위 테스트 오류: 약속을 호출할 수 없습니다.동기화 테스트 내에서 (0) | 2023.10.04 |
좋은 지수가 무엇인지 어떻게 압니까? (0) | 2023.10.04 |
Visual Studio Community 2017 링커 문제 - MariaDB (0) | 2023.10.04 |
음의 부동 소수점 값을 부호 없는 int로 변환할 때의 동작은 무엇입니까? (0) | 2023.10.04 |