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

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 までご連絡ください。
LaravelとThe BackEnd:Webアプリケーションロジックの電源LaravelとThe BackEnd:Webアプリケーションロジックの電源Apr 11, 2025 am 11:29 AM

Laravelはバックエンドロジックでどのように役割を果たしますか?ルーティングシステム、Eloquentorm、認証と承認、イベントとリスナー、パフォーマンスの最適化を通じてバックエンド開発を簡素化および強化します。 1.ルーティングシステムにより、URL構造の定義とリクエスト処理ロジックが可能になります。 2.Eloquentormは、データベースの相互作用を簡素化します。 3.認証および承認システムは、ユーザー管理に便利です。 4.イベントとリスナーは、ゆるく結合したコード構造を実装します。 5.パフォーマンスの最適化により、キャッシュとキューイングを通じてアプリケーションの効率が向上します。

Laravelがそんなに人気があるのはなぜですか?Laravelがそんなに人気があるのはなぜですか?Apr 02, 2025 pm 02:16 PM

Laravelの人気には、単純化された開発プロセスが含まれ、快適な開発環境を提供し、豊富な機能が提供されます。 1)Rubyonrailsの設計哲学を吸収し、PHPの柔軟性を組み合わせています。 2)Eloquentorm、Bladeテンプレートエンジンなどのツールを提供して、開発効率を向上させます。 3)そのMVCアーキテクチャと依存関係噴射メカニズムにより、コードがよりモジュール化され、テスト可能になります。 4)キャッシュシステムやベストプラクティスなどの強力なデバッグツールとパフォーマンス最適化方法を提供します。

どちらが良いのか、DjangoとLaravel?どちらが良いのか、DjangoとLaravel?Mar 28, 2025 am 10:41 AM

DjangoとLaravelはどちらもフルスタックのフレームワークです。 DjangoはPython開発者や複雑なビジネスロジックに適していますが、LaravelはPHP開発者とエレガントな構文に適しています。 1.DjangoはPythonに基づいており、迅速な発展と高い並行性に適した「バッテリーコンプリート」哲学に従います。 2. LaravelはPHPに基づいており、開発者エクスペリエンスを強調しており、小規模から中規模のプロジェクトに適しています。

どちらがより良いPHPですか、それともLaravelですか?どちらがより良いPHPですか、それともLaravelですか?Mar 27, 2025 pm 05:31 PM

LaravelはPHPベースのフレームワークであるため、PHPとLaravelは直接匹敵するものではありません。 1.PHPは、シンプルで直接的であるため、小規模プロジェクトや迅速なプロトタイピングに適しています。 2。LARAVELは、豊富な機能とツールを提供するため、大規模なプロジェクトや効率的な開発に適していますが、急な学習曲線があり、純粋なPHPほど良くない場合があります。

Laravelはフロントエンドですか、それともバックエンドですか?Laravelはフロントエンドですか、それともバックエンドですか?Mar 27, 2025 pm 05:31 PM

laravelisabackendframeworkbuiltonphp、designforwebapplicationdevelopment.itfocusonserver-sidelogic、databasemanagement、およびapplicationStructure、およびbueithedendtechnologiesvue.jsorreactforfull-stackdevelymentと統合されていること。

Laravelでカスタムブレードディレクティブを作成および使用するにはどうすればよいですか?Laravelでカスタムブレードディレクティブを作成および使用するにはどうすればよいですか?Mar 17, 2025 pm 02:50 PM

この記事では、Laravelでカスタムブレードディレクティブの作成と使用を行い、テンプレートを強化します。ディレクティブの定義、テンプレートでそれらを使用し、大規模なプロジェクトでそれらを管理することをカバーし、改善されたコードの再利用性やRなどの利点を強調しています

Laravelのコンポーネントを使用して再利用可能なUI要素を作成するにはどうすればよいですか?Laravelのコンポーネントを使用して再利用可能なUI要素を作成するにはどうすればよいですか?Mar 17, 2025 pm 02:47 PM

この記事では、コンポーネントを使用してLaravelで再利用可能なUI要素の作成とカスタマイズについて説明し、組織のベストプラクティスを提供し、パッケージを強化することを提案します。

Laravelのルーティング機能を使用して、SEOに優しいURLを作成するにはどうすればよいですか?Laravelのルーティング機能を使用して、SEOに優しいURLを作成するにはどうすればよいですか?Mar 17, 2025 pm 02:43 PM

この記事では、Laravelのルーティングを使用してSEOに優しいURLを作成し、Best Practice、Canonical URL、SEO最適化のツールをカバーします。ワード数:159

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター