머리말
웹 개발을 위해 Laravel과 JWT를 사용하는 과정에서 JWT를 삭제하는 상황이 발생할 수 있습니다. 이번 글에서는 Laravel 프레임워크에서 JWT를 삭제하는 방법을 소개하겠습니다.
JWT 삭제의 필요성
JWT는 사용자 인증 및 승인 문제를 매우 잘 해결하지만 경우에 따라 JWT를 삭제해야 할 수도 있습니다. 그 이유는 다음과 같습니다.
JWT 삭제 단계
JWT를 삭제하려면 다음 세 단계를 수행하세요.
이 단계를 더 자세히 설명하겠습니다.
JWT 취소
JWT 취소를 위해서는 JWT 블랙리스트를 유지해야 합니다. 사용자가 로그아웃하거나 애플리케이션을 종료하면 해당 사용자의 JWT를 블랙리스트에 추가합니다. 사용자가 이 JWT를 사용하여 애플리케이션에 액세스하려고 시도하면 애플리케이션은 JWT가 블랙리스트에 있는지 확인합니다. 그렇다면 사용자는 애플리케이션에 들어갈 수 없습니다. 이를 달성하기 위한 단계는 다음과 같습니다.
1단계: 미들웨어 생성
"JwtBlacklist"라는 미들웨어를 생성합니다.
php artisan make:middleware JwtBlacklist
2단계: 코드 작성
미들웨어의 핸들 메소드에 다음 코드를 작성합니다.
public function handle($request, Closure $next) { $token = $request->bearerToken(); if(auth()->check()){ auth()->logout(); JWTAuth::invalidate(JWTAuth::getToken()); return response()->json(['message' => 'Logout successful']); }elseif($token){ try { JWTAuth::parseToken()->authenticate(); JWTAuth::invalidate(JWTAuth::getToken()); return response()->json(['message' => 'Logout successful']); } catch (JWTException $e) { // ignore errors } } return $next($request); }
3단계: 미들웨어 등록
app/Http/Kernel의 $routeMiddleware 배열에 미들웨어를 등록합니다. php 파일.
'jwt.blacklist' => AppHttpMiddlewareJwtBlacklist::class,
JWT 유효 기간 수정
JWT는 헤더(Base64로 인코딩된 JSON 개체), 페이로드(Base64로 인코딩된 JSON 개체), 서명의 세 부분으로 구성됩니다. 따라서 로드에서 유효 기간을 변경할 수 있습니다.
Laravel/JWT에서는 다음 코드를 사용할 수 있습니다.
public function login(Request $request) { $credentials = $request->only('email', 'password'); if ($token = JWTAuth::attempt($credentials, ['exp' => Carbon::now()->addHours(24)->timestamp])) { return response()->json(['message' => 'Success', 'token' => $token]); } return response()->json(['error' => 'Unauthorized'], 401); }
위 코드에서는 JWT의 유효 기간을 24시간으로 설정했습니다.
JWT 삭제
사용자에게 JWT를 수동으로 삭제하도록 요구하는 경우 사용자에게 이 정보를 명확하게 알려야 합니다. 사용자가 JWT를 삭제할 수 있도록 로그아웃 작업에 대한 버튼이나 링크를 제공할 수 있습니다.
코드를 작성하여 JWT를 삭제하려면 컨트롤러에 다음 코드를 추가하면 됩니다.
public function logout(Request $request) { JWTAuth::invalidate(JWTAuth::getToken()); return response()->json(['message' => 'Logout successful']); }
이 컨트롤러는 사용자가 로그아웃 버튼을 클릭하면 JWT를 삭제합니다.
결론
이 글에서는 Laravel과 JWT에서 JWT를 삭제하는 방법을 설명합니다. JWT의 유효 기간을 취소, 수정하고 JWT를 삭제하면 됩니다. 궁금하신 점이나 문의사항이 있으신 경우 댓글란에 메시지를 남겨주시면 최대한 빨리 답변해 드리겠습니다.
위 내용은 라라벨 JWT 삭제의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!