透過 Laravel Sanctum 實作 PHP 安全驗證
概述:
在現代 Web 開發中,安全驗證是一個至關重要的方面。 Laravel Sanctum 是 Laravel 提供的一種簡單且靈活的身份驗證守衛,可用於前後端分離的應用。本文將介紹如何使用 Laravel Sanctum 實作 PHP 安全驗證,並提供相關的程式碼範例。
步驟一:安裝 Laravel Sanctum
首先,在 Laravel 專案中安裝 Sanctum 擴充包。可以使用 Composer 進行安裝,執行下列指令:
composer require laravel/sanctum
步驟二:設定 Sanctum
安裝完成後,需要設定 Sanctum 。打開專案根目錄下的config/app.php
文件,找到providers
數組,並添加以下程式碼:
'providers' => [ // ... LaravelSanctumSanctumServiceProvider::class, ],
然後,執行以下命令來發布Sanctum 的設定檔和資料庫遷移檔:
php artisan vendor:publish --provider="LaravelSanctumSanctumServiceProvider"
接著,執行下列指令來執行資料庫遷移:
php artisan migrate
步驟三:設定驗證驅動程式
在設定過程中,需要選擇使用Sanctum 作為預設的身份驗證驅動程式。開啟config/auth.php
文件,找到guards
數組,並將預設的guard 設為sanctum
:
'defaults' => [ 'guard' => 'sanctum', // ... ],
步驟四:啟用Sanctum 中間件
Sanctum 需要使用自己的中間件來處理身分驗證。為了啟用 Sanctum,需要將 Authenticate
中介軟體替換為 Sanctum 提供的中間件。開啟app/Http/Kernel.php
文件,將以下程式碼加入$routeMiddleware
陣列中:
protected $routeMiddleware = [ // ... 'auth' => LaravelSanctumHttpMiddlewareEnsureFrontendRequestsAreStateful::class, ];
步驟五:產生Sanctum API Token
#Sanctum 提供了API Token 來進行身份驗證。 API Token 可以透過以下程式碼來產生:
use LaravelSanctumHasApiTokens; class User extends Authenticatable { use HasApiTokens; }
該程式碼在 User
Model 中使用了 HasApiTokens
trait 來為使用者產生 API Token。
步驟六:保護路由
使用Sanctum 進行安全驗證後,可以透過以下程式碼來保護需要驗證的路由:
Route::middleware('auth:sanctum')->group(function () { // 这里是需要保护的路由 });
以上程式碼將會套用Sanctum 中間件來驗證使用者的API Token。
步驟七:進行身份驗證
當使用者透過前端應用程式提交請求時,可以透過以下程式碼來進行身份驗證:
use IlluminateHttpRequest; Route::post('/login', function (Request $request) { $credentials = $request->only('email', 'password'); if (Auth::attempt($credentials)) { $user = Auth::user(); $token = $user->createToken('api')->plainTextToken; return response()->json([ 'user' => $user, 'token' => $token, ]); } else { return response()->json(['error' => 'Unauthorized'], 401); } });
以上程式碼將會透過用戶提供的郵箱和密碼來進行身份驗證,並傳回一個帶有使用者資訊和API Token 的JSON 回應。
總結:
透過 Laravel Sanctum,我們可以輕鬆實現 PHP 應用的安全驗證。本文介紹如何安裝和設定 Laravel Sanctum,並提供了相關的程式碼範例。希望本文對於初學者能夠有所幫助,並能啟發更多人學習和使用 Laravel Sanctum。
參考連結:
以上是透過 Laravel Sanctum 實現 PHP 安全驗證的詳細內容。更多資訊請關注PHP中文網其他相關文章!