Laravel에서 tymon/jwt-auth를 사용하여 JWT 영패 자동 업데이트
환경
tymon/jwt-auth 1.0.0-rc.5
개요
JWT 영패는 영패 자체에 유효기간을 삽입하였으며, 기한을 갱신하기 위해서는 영패 자체를 교체해야 한다.
프론트 데스크에서 유효기간을 관리하고 영패를 갱신하지 않고 슬라이딩 세션을 실현합니다.
영패는 쿠키로 프론트에 보관한다.서버에서 만료가 감지되면 새 태그를 쿠키로 설정합니다.
토큰이 만료됨(JWT_TTL: 기본값 1시간)가 끊어지더라도 만료 시간 새로 고침 (JWT_REFRESH_TTL: 기본값은 2주) 내에서만 이 영패를 사용하여 새 영패를 발행할 수 있다.
로그인 순서
사전 설정태그 업데이트 시퀀스실시 서버 측에서 영패의 유효기간이 만료된 것을 검출하여 리셋한 후 되돌아오는 중간부품을 제작합니다.잘못된 영패나 업데이트가 실패하면 이후 정상적인 처리에서 401이 되기 때문에 아무것도 하지 않습니다. namespace App\Http\Middleware; use Closure; use Illuminate\Http\Request; use Tymon\JWTAuth\Exceptions\JWTException; use Tymon\JWTAuth\Exceptions\TokenExpiredException; use Tymon\JWTAuth\Http\Middleware\BaseMiddleware; class RefreshToken extends BaseMiddleware { public function handle($request, Closure $next) { $token = $newToken = null; try { $token = $this->auth->parseToken(); $token->authenticate(); } catch (TokenExpiredException $e) { // Token expired: try refresh try { $newToken = $token->refresh(); } catch (JWTException $e) { // Refresh failed (refresh expired) } } catch (JWTException $e) { // Invalid token } $response = $next($request); if ($newToken) { // Send the refreshed token back to the client. $response->withCookie(cookie( 'token', $newToken, config('jwt.refresh_ttl'), // minutes null, // path null, // domain $request->getScheme() === 'https', // secure true // httpOnly )); } return $response; } } 이 중간부품을 사용합니다. namespace App\Http; use Illuminate\Foundation\Http\Kernel as HttpKernel; class Kernel extends HttpKernel { ... protected $middlewareGroups = [ 'api' => [ ... \App\Http\Middleware\RefreshToken:class,/JWT 영패 업데이트 ※ bindings 전에 'bindings', ... ], ]; } 블랙리스트 유예 기간 설정리셋을 진행하면 낡은 영패를 즉시 사용할 수 없기 때문에 프론트에서 여러 개의 요청을 동시에 진행하는 경우 일부 요청이 실패할 수 있습니다.이런 상황을 방지하기 위해 일정 시간 동안 낡은 영패를 사용할 수도 있다.env블랙리스트 유예기간(JWT_BLACKLIST_GRACE_PERIOD).(예: 15초)
JWT_BLACKLIST_GRACE_PERIOD=15
Reference
이 문제에 관하여(Laravel에서 tymon/jwt-auth를 사용하여 JWT 영패 자동 업데이트), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yh1224/items/bd00e85d5c53350e93ca텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)