はじめに
Laravel と JWT を使用して Web 開発を行う過程で、JWT を削除する場面が発生することがありますが、この記事では、Laravel フレームワークで JWT を削除する方法を紹介します。
JWT 削除の必要性
JWT はユーザー認証と認可の問題をうまく解決しますが、場合によっては JWT を削除する必要があるかもしれません。その理由は次のとおりです。
JWT を削除する手順
JWT を削除するには、次の 3 つの手順があります:
これらの手順について詳しく説明します。
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: ミドルウェアを登録します
アプリ /Http/Kernel.php ファイルの $routeMiddleware 配列にミドルウェアを登録します。
'jwt.blacklist' => AppHttpMiddlewareJwtBlacklist::class,
JWT の有効期間を変更する
JWT は、ヘッダー (Base64 エンコードされた JSON オブジェクト)、ペイロード (Base64 エンコードされた JSON オブジェクト)、署名の 3 つの部分で構成されます。したがって、ロード内の有効期間を変更できます。
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 の削除を行います。ご質問やご質問がございましたら、コメント欄にメッセージを残してください。できるだけ早く返信させていただきます。
以上がlaravel jwt削除の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。