今日の大規模なインターネット アプリケーション開発において、ユーザー セキュリティ認証は不可欠な部分です。ユーザーのセキュリティを確保するには、認証に JSON Web Token (JWT) を使用するのが一般的です。ユーザー認証と権限制御を簡単かつ効果的に実装できます。この記事では、ThinkPHP6 プロジェクトで認証に JWT を使用する方法を紹介します。
JSON Web トークンとは何ですか?
JSON Web Token (JWT) は軽量の認証メカニズムです。その目的は、ネットワーク上でクレームを安全に送信することであり、認証およびクレーム交換の手段として使用できます。 JWT は HTTP リクエスト ヘッダーまたは URL パラメーターに含まれているため、サーバーとクライアントの間で簡単かつ便利に転送されます。
JWT は、ヘッダー、ペイロード、署名の 3 つの部分で構成されます。ヘッダーには署名アルゴリズムとタイプを説明する情報が含まれ、ペイロードには宣言とデータ情報が含まれ、署名は JWT の正当性を検証するために使用されます。あらゆるデータを JWT ペイロードに保存でき、必要な情報をカスタマイズできます。
ThinkPHP6 で認証に JWT を使用する手順
ステップ 1: jwt-auth 拡張機能をインストールする
まず、jwt-auth 拡張機能をプロジェクトに導入する必要があります。次の依存関係をcomposer.json ファイルに追加します。
"tymon/jwt-auth": "^1.0.0-rc.5"
依存関係をインストールした後、composer update を使用して依存関係を更新します。
ステップ 2: 構成ファイルを生成する
次のコマンドを実行して構成ファイルを生成します:
php think jwt:publish
構成ファイルを生成した後、構成を変更する必要があります。 JWTキーや有効期限などのパラメータは、/config/jwt.phpファイルを変更するだけです。
ステップ 3: 認証ミドルウェアを作成する
JWT 認証プロセスはサーバー側で完了する必要があります。したがって、リクエストがコントローラーに到達する前に JWT を認証するミドルウェア AuthMiddleware を作成する必要があります。
最初に、AuthMiddleware ファイルを作成する必要があります:
php think make:middleware AuthMiddleware
AuthMiddleware ファイルでは、次のコードを使用して JWT を認証できます:
<?php namespace appmiddleware; use thinkacadeRequest; use TymonJWTAuthExceptionsTokenExpiredException; use TymonJWTAuthFacadesJWTAuth; use thinkexceptionHttpException; class AuthMiddleware { public function handle($request, Closure $next) { //获取JWT token $token = JWTAuth::getToken(); if (!$token) { throw new HttpException(401, 'Token not provided'); } try { //验证JWT token $user = JWTAuth::authenticate($token); $request->user = $user; } catch (TokenExpiredException $exception) { throw new HttpException(401, 'Token expired'); } catch (Exception $exception) { throw new HttpException(401, 'Token invalid'); } return $next($request); } }
ハンドル関数では、まず JWT トークンを取得します。トークンが存在しない場合は、401 例外がスローされます。
トークンが存在する場合は、JWTAuth::authenticate($token) を使用してトークンの有効性を検証します。成功すると、ユーザー情報がリクエスト コンテキストにバインドされます。
上記のコードでは、スローされたすべての例外が 401 エラー コードを返すことに注意してください。
ステップ 4: 認証にミドルウェアを使用する
以下に示すように、コントローラーで認証に AuthMiddleware ミドルウェアを使用します。
<?php namespace appcontroller; use appmiddlewareAuthMiddleware; class UserController extends Base { protected $middleware = [ AuthMiddleware::class ]; public function index() { return json($this->request->user, 200); } }
上記のコードでは、コントローラーは AuthMiddleware を追加します。ミドルウェアに組み込まれているため、リクエストがコントローラーに到達する前に自動的に実行されます。
コントローラーのindexメソッドは現在要求しているユーザー情報を返しますが、JWT認証が正しければjson形式のユーザー情報が返されます。
結論
この記事では、ThinkPHP6 プロジェクトで認証に JWT を使用する方法を紹介します。 JWT 拡張機能のインストールと構成ファイルの生成、認証ミドルウェアの記述、ミドルウェアの使用を通じて、JWT 認証の実装プロセスを詳しく紹介しました。この過程で、私たちは JWT 関連の知識をより深く理解し、将来のインターネット開発に貴重な経験を提供することができました。
以上がThinkPHP6 での認証に JWT を使用するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。