現在の位置: ホーム> 最新記事一覧> JWTを使用してThinkPhpフレームワークに認証と承認を実装する詳細なチュートリアル

JWTを使用してThinkPhpフレームワークに認証と承認を実装する詳細なチュートリアル

gitbox 2025-07-03

JWTとは何ですか

JWT(JSON Web Token)は、クライアントとサーバーの間に安全な情報を渡すことにより、ユーザーIDを認証する認証のオープン標準です。 JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。その中で、ヘッダーは署名アルゴリズム、ペイロードがユーザー情報を保存し、署名を使用してJWTの完全性を確保し、改ざんを防ぐために使用されます。

JWTを使用する利点

1。ステートレス:JWTトークンは、サーバーにセッション情報を保存する必要はなく、複数のサーバー間で簡単に拡張できます。

2。セキュリティ:JWTは、データの改ざんを避けるために、署名を通じてデータの整合性と信頼性を保証します。

3.スケーラビリティ:JWTの負荷部分は、必要な情報を保存でき、さまざまなアプリケーションシナリオに適しています。

ThinkPhpフレームワークでJWTを使用します

ThinkPhpフレームワークでJWTを使用するには、最初に `Firebase/PHP-JWT`ライブラリをインストールする必要があります。 Composerを使用してインストールできます。コマンドは次のとおりです。

<span class="fun">作曲家はFirebase/Php-Jwtを必要とします</span>

JWTを生成します

JWTを生成するプロセスには、ヘッダーの作成、ペイロードの設定、秘密鍵での署名が含まれます。 ThinkPhpでは、JWTを生成するためにコントローラーにメソッドを記述できます。これがサンプルコードです:

 use Firebase\JWT\JWT;

class UserController extends Controller {
    public function createJwt($userId, $username) {
        $key = 'your_secret_key';
        $payload = array(
            'user_id' => $userId,
            'username' => $username,
            'exp' => time() + 3600 // 有効期限を設定します1時間
        );
        $jwt = JWT::encode($payload, $key);
        return $jwt;
    }
}

上記のコードでは、「createjwt」メソッドは、ユーザーID、ユーザー名、有効期限を含むJWTを生成します。

JWTを確認します

検証JWTは、ミドルウェアを作成することで処理できます。 JWTを検証するためのサンプルコードは次のとおりです。

 use Firebase\JWT\JWT;

class JwtMiddleware {
    public function handle($request, Closure $next) {
        $key = 'your_secret_key';
        $jwt = $request->header('Authorization');
        try {
            JWT::decode($jwt, $key, array('HS256'));
            return $next($request);
        } catch (Exception $e) {
            return response('Unauthorized.', 401);
        }
    }
}

この例では、「ハンドル」メソッドはリクエストからJWTを抽出し、その有効性を確認します。 JWTが有効な場合、リクエストは継続されます。そうしないと、401の不正な応答が返されます。

JWTによるルーティングの保護

特定のルートを保護するために、ルート定義の場合はJWT検証ミドルウェアを適用できます。ルートを保護するためのサンプルコードは次のとおりです。

 use Firebase\JWT\JWT;

Route::get('/protected', function () {
    return response('Protected resource.');
})->middleware('jwt');

この例では、「ミドルウェア」メソッドは、JWT検証ミドルウェアを「/保護された」ルートに適用し、検証に合格するリクエストのみがルートにアクセスできるようにします。

要約します

JWTを使用することにより、ThinkPHPフレームワークに効率的な認証と承認メカニズムを実装できます。 JWTを使用すると、アプリケーションのセキュリティが向上するだけでなく、柔軟なスケーラビリティも提供します。このチュートリアルでは、JWTを生成し、JWTを検証し、JWTを使用して敏感なルートを保護する方法について説明します。この記事がJWTをよりよく理解し、適用するのに役立つことを願っています。