首頁 >後端開發 >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,培育強大且可擴展的應用程式。本指南探討了 Sanctum 的設定、功能和用例,包括 SPA 和基於令牌的身份驗證。

了解 Laravel Sanctum

Laravel Sanctum 簡化了 API 驗證,提供了兩個關鍵功能:

  • 基於令牌的身份驗證:非常適合外部服務或行動應用程式存取的 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,以充分了解其功能。

以上是使用 Laravel Sanctum 日間建置 API的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn