ホームページ >バックエンド開発 >PHPチュートリアル >Laravel Sanctum を使用して API を構築する日

Laravel Sanctum を使用して API を構築する日

Barbara Streisand
Barbara Streisandオリジナル
2025-01-09 14:05:41871ブラウズ

Day Building APIs with Laravel Sanctum

Laravel Sanctum: 最新のアプリケーションにおける API 認証への合理化されたアプローチ。 API はプラットフォーム間の通信に不可欠であり、Sanctum は API を保護し、堅牢でスケーラブルなアプリケーションを促進するための軽量ソリューションを提供します。このガイドでは、SPA やトークンベースの認証を含む、Sanctum のセットアップ、機能、ユースケースについて説明します。

Laravel Sanctum を理解する

Laravel Sanctum は API 認証を簡素化し、2 つの主要な機能を提供します。

  • トークンベースの認証: 外部サービスまたはモバイル アプリケーションによってアクセスされる API に最適です。
  • セッションベースの認証: フロントエンドとバックエンドが同じドメインを共有するシングルページ アプリケーション (SPA) に最適です。

より複雑なソリューションとは異なり、Sanctum の軽量な性質と簡単な構成により、OAuth 要件のないアプリケーションに最適です。

Laravel Sanctum の実装

ステップ 1: インストール

Composer を使用して Sanctum をインストールします:

<code class="language-bash">composer require laravel/sanctum</code>

ステップ 2: 構成の公開

Sanctum 設定ファイルを公開します:

<code class="language-bash">php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"</code>

これにより config/sanctum.php が生成され、Sanctum の設定をカスタマイズできるようになります。

ステップ 3: データベースの移行

Sanctum は personal_access_tokens テーブルを使用します。このテーブルを作成します:

<code class="language-bash">php artisan migrate</code>

ステップ 4: ミドルウェア構成

Sanctum のミドルウェアを api 内の app/Http/Kernel.php ミドルウェア グループに統合します:

<code class="language-php">'api' => [
    \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,
    'throttle:api',
    \Illuminate\Routing\Middleware\SubstituteBindings::class,
],</code>

実際のトークンベースの認証

ステップ 1: ルート保護

routes/api.php ミドルウェアを使用して auth:sanctum でルートを保護します:

<code class="language-php">use Illuminate\Support\Facades\Route;

Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
    return $request->user();
});</code>

ステップ 2: トークンの生成

createToken メソッドを使用して個人用アクセス トークンを生成します:

<code class="language-php">use App\Models\User;
use Illuminate\Http\Request;

Route::post('/login', function (Request $request) {
    $user = User::where('email', $request->email)->first();

    if (! $user || ! Hash::check($request->password, $user->password)) {
        return response()->json(['message' => 'Invalid credentials'], 401);
    }

    return $user->createToken('auth_token')->plainTextToken;
});</code>

ステップ 3: トークンの取り消し

ログアウト用のユーザーのトークンを取り消します:

<code class="language-php">Route::post('/logout', function (Request $request) {
    $request->user()->tokens()->delete();
    return response()->json(['message' => 'Logged out successfully']);
});</code>

シングルページ アプリケーション (SPA) の統合

Sanctum は SPA にセッションベースの認証を活用します。

ステップ 1: CSRF 保護

EnsureFrontendRequestsAreStateful ミドルウェアが api ミドルウェア グループ内で正しく構成されていることを確認してください。

ステップ 2: フロントエンド構成

SPA から認証された AJAX リクエストを含む CSRF トークンを送信します:

<code class="language-bash">composer require laravel/sanctum</code>

セキュリティのベストプラクティス

  • トークンのセキュリティ: トークンを安全に保存し (例: HTTP のみの Cookie に)、クライアント側での公開を防ぎます。
  • トークンの有効期限: 漏洩したトークンに関連するリスクを軽減するために、トークンの有効期限を実装します。
  • スコープ制限: トークンの権限を制御するための特定のスコープを定義します。

結論

Laravel Sanctum は、最新のアプリケーションの API を保護するためのユーザーフレンドリーで効率的な方法を提供します。 その軽量設計と柔軟な API により、開発者の認証が簡素化され、SPA とトークンベースの API アクセスの両方にとって貴重なツールになります。 Sanctum の機能を十分に理解するために、プロジェクトで Sanctum を試してみてください。

以上がLaravel Sanctum を使用して API を構築する日の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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