現在の位置: ホーム> 最新記事一覧> ThinkPhp6はJWT認証の詳細な説明を実施し、ユーザーのIDの確認を簡単に習得します

ThinkPhp6はJWT認証の詳細な説明を実施し、ユーザーのIDの確認を簡単に習得します

gitbox 2025-08-02

導入

JWT(JSON Webトークン)は、ネットワークアプリケーションのトークンを安全に転送するために使用されるオープン標準(RFC 7519)です。ユーザーID認証と許可管理に広く使用されています。人気のあるPHPフレームワークとして、ThinkPhp6はリッチなコンポーネントサポートを提供します。これにより、開発者がJWT認証機能を統合することが容易になります。この記事では、ThinkPhp6にJWT認証を実装する方法を徐々に説明します。

JWT拡張機能をインストールします

Composerを使用して拡張機能ライブラリをインストールします

まず、Composerを介してJWT関連の拡張機能ライブラリをインストールする必要があります。プロジェクトルートディレクトリを入力し、端末で次のコマンドを実行します。

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

JWTパラメーターを構成します

インストールが完了したら、ThinkPhp6の構成ディレクトリでJWT.PHPファイルを作成または変更し、次の内容を構成します。

 return [
    'secret'    => 'your_secret_key',
    'algorithm' => 'HS256',
];

その中で、 Secretは署名に使用される重要なものであり、ランダムな文字列として設定することをお勧めします。アルゴリズムは、HS256、HS384、またはHS512オプションの暗号化アルゴリズムです。

認定ミドルウェアを作成します

ミドルウェアクラスを作成します

認証ミドルウェアは、リクエストがコントローラーに届く前にJWTトークンを検証するために使用されます。コマンドを使用して、ミドルウェアをすばやく生成します。

 <span class="fun">PHP Think Make:Middleware jwtmiddleware</span>

このコマンドは、アプリ/ミドルウェアディレクトリにJWTMiddlewareクラスファイルを生成します。

ミドルウェアロジックの書き込み

jwtmiddlewareファイルを開き、認証コードを補完します。

 use think\facade\Request;
use think\facade\Response;
use Firebase\JWT\JWT;

class JwtMiddleware
{
    public function handle($request, \Closure $next)
    {
        $token = Request::header('Authorization');
        
        if (empty($token)) {
            return Response::create('Unauthorized', '401');
        }
        
        try {
            JWT::decode($token, config('jwt.secret'), [config('jwt.algorithm')]);
        } catch (\Exception $e) {
            return Response::create('Invalid token', '401');
        }
        
        return $next($request);
    }
}

コードでは、最初にリクエストヘッダーからJWTトークンを取得し、空の場合は401エラーを返します。次に、トークンの正当性を確認し、失敗した場合は401も返します。検証が渡された後、後続の要求は引き続き実行されます。

アプリケーションミドルウェア

ルーティングへのアプリケーション

ルート/route.phpで、認証が必要なルートにミドルウェアを追加します。

 \think\Route::group(function () {
    // 認証が必要なルート
})->middleware(\app\middleware\JwtMiddleware::class);

コントローラーでのアプリケーション

コントローラークラスの注釈でミドルウェアを宣言することもできます。

 namespace app\controller;

use think\annotation\route\Post;
use app\middleware\JwtMiddleware;

/**
 * @route("auth")
 * @middleware(JwtMiddleware::class)
 */
class AuthController
{
    // コントローラーコード
}

このようにして、コントローラー内のすべてのルートは、JWT認証ミドルウェアを自動的に通過します。

ID認証をテストします

構成が完了したら、郵便配達員またはその他のインターフェイステストツールを使用して、有効なJWTトークンを使用してリクエストを送信して、インターフェイスが正常に応答することを確認します。無効または欠落しているトークンの場合、401の不正なエラーを返す必要があります。

要約します

この記事では、JWT認証をThinkPhp6フレームワークに統合する方法について説明します。拡張インストール、構成、認証ミドルウェアの作成とアプリケーション、およびインターフェイステストの完全なプロセスをカバーしています。 JWT認証を実装することにより、アプリケーションのセキュリティを改善し、ユーザーID管理を効率的に達成できます。