laravel jwt削除

王林
王林オリジナル
2023-05-29 09:31:36720ブラウズ

はじめに

Laravel と JWT を使用して Web 開発を行う過程で、JWT を削除する場面が発生することがありますが、この記事では、Laravel フレームワークで JWT を削除する方法を紹介します。

JWT 削除の必要性

JWT はユーザー認証と認可の問題をうまく解決しますが、場合によっては JWT を削除する必要があるかもしれません。その理由は次のとおりです。

  1. セキュリティの問題: JWT が侵害または侵害されると、重大なセキュリティ脆弱性が発生する可能性があります。
  2. 悪用の問題: アプリケーションがユーザーのアクティビティに関するデータを収集している場合、ユーザーがログアウトするかアプリケーションを終了するときにデータの収集を停止するために、JWT を削除する必要がある場合があります。
  3. デバッグの場合: JWT を削除すると、ユーザーのログイン フローを再シミュレートするのに役立ちます。

JWT を削除する手順

JWT を削除するには、次の 3 つの手順があります:

  1. JWT を取り消す: JWT を取り消すことができます。無効にします。これを実現するには、保存された JWT のブラックリストを維持する必要があります。
  2. JWT の有効期間を変更する: JWT の有効期間をより短い期間に設定して、盗まれた可能性のある JWT がより早く期限切れになるようにすることができます。
  3. 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: ミドルウェアを登録します

アプリ /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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。