ホームページ  >  記事  >  PHPフレームワーク  >  ThinkPHP6 での認証に JWT を使用する

ThinkPHP6 での認証に JWT を使用する

王林
王林オリジナル
2023-06-21 13:34:401993ブラウズ

今日の大規模なインターネット アプリケーション開発において、ユーザー セキュリティ認証は不可欠な部分です。ユーザーのセキュリティを確保するには、認証に 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 thinkacadeRequest;
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 サイトの他の関連記事を参照してください。

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