ホームページ  >  記事  >  PHPフレームワーク  >  LaravelにおけるTokenの実装仕組みを紹介した記事

LaravelにおけるTokenの実装仕組みを紹介した記事

PHPz
PHPzオリジナル
2023-04-23 09:13:141719ブラウズ

Laravel は、PHP プログラミング言語を使用して開発された Web アプリケーション フレームワークであり、その優れたパフォーマンスは、多数の強力な拡張パッケージが内部に統合されているためです。これには、トークンの基礎となる実装が含まれます。トークンは Web アプリケーションで一般的に使用される認証方法であり、通常は API や Web サービスを不正なアクセスから保護するために使用されます。この記事では、LaravelにおけるTokenの実装の仕組みを紹介します。

1. トークンの概念

トークンは、その名前が示すように、ある種の ID 情報または承認情報を表すことができるマークであるトークンを指します。通常、トークンはサーバーによって生成され、クライアントに発行されます。クライアントがトークンを受信すると、トークンはローカルに保存され、認証または認可の ID として後続のリクエストのリクエスト ヘッダーまたはリクエスト パラメーターに追加されます。サーバーは、トークンが有効かどうかを確認することで、リクエストに認証情報または認可情報が含まれているかどうかを判断できます。

トークンを使用すると、Web アプリケーションを不正アクセスからより効果的に保護できます。特に API や Web サービスでは、トークンが不可欠です。

2. Laravel トークンの実装

優れた Web アプリケーション フレームワークとして、Laravel は組み込みの Auth 関数でトークンのサポートを提供します。 Laravel では、トークンは Laravel Sanctum 拡張パッケージを使用して実装されます。

2.1 Laravel Sanctum

Laravel Sanctum は、API キーまたはトークンに基づいて Laravel アプリケーションに API 認証を提供できる軽量の認証パッケージであり、アプリケーションを SPA などのステートレス環境で実行できるようにします。アプリケーション、シングルページ アプリケーション、モバイル アプリケーション。 Laravel Sanctum は以下の機能を提供します:

    #設定なしで使用を開始できます;
  1. セッション、トークン、API キーなどの複数の認証方法をサポート;
  2. Built -Cookie、トークン、認証などの複数の認証実装;
  3. 便利な認証とトークン生成を提供;
  4. より優れたカスタム認証プロセス。
2.2 トークン実装原則

Laravel Sanctum では、トークン実装原則はセッション実装原則と似ています。リクエストでは、クライアントがサーバーにリクエストを行うと、トークンがリクエスト パラメーターまたはヘッダーの Authorization フィールドとしてサーバーに送信されます。サーバーはトークンが有効かどうかを確認し、有効期間内であれば、要求された操作の許可を与えるか、エラー メッセージを返します。トークンの実装プロセスは次のとおりです:

    トークンの作成: ユーザーがログインすると、Sanctum はユーザーのランダムなトークンを生成し、そのトークンをバックグラウンド データベースに保存します。 # トークンの送信: リクエスト パラメーターまたはヘッダーの承認フィールドとしてトークンをサーバーに送信します;
  1. トークンの検証: サーバー側で、Sanctum は受信したトークンが有効かどうかを確認し、承認または拒否を決定します。 ;
  2. トークン管理: Sanctum は、トークンを作成、取り消し、検索、検証するための一連の API を提供します。
  3. 3. Laravel トークンの使用
Sanctum は、トークンの作成、失効、検索と検証など、トークンを使用するための便利で使いやすい API を提供します。トークンの使用方法は次のとおりです:

3.1 Sanctum のインストール

アプリケーションでは、まず Sanctum の依存関係パッケージをアプリケーションのcomposer.json ファイルに導入する必要があります:

composer require laravel/sanctum
インストールが完了したら、次の設定を config/app.php ファイルに追加する必要があります。

'providers' => [ 
    // Other service providers... 
    Laravel\Sanctum\SanctumServiceProvider::class, 
],
3.2 設定を公開する

インストールが完了したら、次のコマンドを使用して Sanctum 設定ファイルを公開します。

php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"
3.3 ミドルウェアの設定

Sanctum を使用する場合は、対応するルートにミドルウェアを追加する必要があります。 LaravelにはAPI認証ミドルウェアが組み込まれており、直接呼び出すことができます。

3.4 トークンの作成

ログイン後、次のコードを使用して現在のユーザーのトークンを作成できます:

use Illuminate\Http\Request; 
use Illuminate\Support\Facades\Hash; 
use Illuminate\Validation\ValidationException; 
use App\Models\User; 
use Illuminate\Support\Facades\Auth; 
use Illuminate\Support\Facades\Route; 

// 创建Token 
Route::post('/api/token/create', function (Request $request) { 
    $request->validate([ 
        'email' => 'required|email', 
        'password' => 'required', 
    ]); 

    $user = User::where('email', $request->email)->first(); 

    if (! $user || ! Hash::check($request->password, $user->password)) { 
        throw ValidationException::withMessages([ 
            'email' => ['The provided credentials are incorrect.'], 
        ]); 
    } 

    return $user->createToken($request->header('User-Agent'))->plainTextToken; 
});
上記のコードでは、次のことがわかります。 Token を作成するときに、マシンの User-Agent を追加パラメータとして使用します。ここでの User-Agent は、ブラウザまたはアプリケーション関連の情報を記録する HTTP ヘッダーです。この情報はトークンの一部として使用されるため、トークンが盗まれたり悪用されたりすると、簡単に発見して取り消すことができます。

3.5 トークンの取り消し

作成されたトークンが盗まれたり無効になったりした場合は、次のコードを使用して取り消すことができます:

Auth::user()->tokens()->delete();
3.6 検証拡張機能

Sanctumまた、優れた検証拡張機能により、アクセス制御を簡単に実行できます。コードは次のとおりです:

use Illuminate\Http\Request; 
use Illuminate\Support\Facades\Hash; 
use Illuminate\Validation\ValidationException; 
use App\Models\User; 
use Illuminate\Support\Facades\Auth; 
use Illuminate\Support\Facades\Route; 
use Laravel\Sanctum\HasApiTokens;

class User extends Authenticatable 
{
    use HasApiTokens, Notifiable;
}
上記のコードを使用した後、アクセス制御に User モデルで can インターフェイスを使用できます。コードは次のとおりです。 :

$request->user()->can('update', $post);
上記のコードでは、 can は、現在のユーザーのロール、権限、およびポリシーに基づいて、ユーザーが更新操作を実行する権利を持っているかどうかを判断します。ユーザーは独自のアクセス制御ロジックを正しく実装する必要があることに注意してください。

4. 概要

この記事では、Laravel での Token の基本的な実装メカニズム、特に Sanctum 拡張機能パッケージの使用方法を紹介しました。 Sanctum は、アプリケーションに迅速に統合してアプリケーションのセキュリティを向上できる、便利で使いやすい API を提供します。トークンの使用方法、作成、失効、管理、アクセス制御について詳しく説明します。

今日のインターネットの世界では、API や Web サービスが広く応用されており、認証方法としてトークンが多くのアプリケーションでさらに広く使用されることになります。 Laravel フレームワークは、Web アプリケーションを不正アクセスからより適切に保護できる優れたトークン実装メカニズムを提供します。

以上がLaravelにおけるTokenの実装仕組みを紹介した記事の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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