在Debian上使用Laravel框架實現API接口認證,通常會采用以下幾種方法:
Passport: Laravel Passport是一個完整的OAuth2服務器實現,它提供了訪問令牌、個人訪問令牌、密碼授權令牌等功能。要使用Passport,你需要先安裝它并通過幾個遷移來設置數據庫表,然后運行幾個命令來生成加密密鑰和配置Passport。
安裝步驟如下:
composer require laravel/passport
php artisan migrate
php artisan passport:install
在config/auth.php
中將api
驅動設置為passport
:
'guards' => [
// ...
'api' => [
'driver' => 'passport',
'provider' => 'users',
],
],
然后,你可以在控制器中使用auth:api
中間件來保護你的路由:
Route::middleware('auth:api')->get('/user', function (Request $request) {
return $request->user();
});
Sanctum: Laravel Sanctum是一個輕量級的解決方案,用于保護API免受未經授權的訪問。它比Passport更簡單,更適合于簡單的API認證需求。
安裝步驟如下:
composer require laravel/sanctum
php artisan migrate
php artisan vendor:publish --tag=sanctum-migrations
php artisan config:cache
在config/cors.php
中配置CORS以允許你的前端應用訪問API:
'paths' => ['api/*'],
'allowed_methods' => ['*'],
'allowed_origins' => ['*'],
'allowed_origins_patterns' => [],
'allowed_headers' => ['*'],
'exposed_headers' => [],
'max_age' => 0,
'supports_credentials' => false,
在app/Http/Middleware/EnsureFrontendRequestsAreStateful.php
中添加Sanctum的狀態ful域:
protected $stateful = [
'localhost', '127.0.0.1', 'localhost:8000',
'[::1]', 'fe80::0', '::1',
];
在config/sanctum.php
中啟用CSRF保護:
'csrf' => true,
然后,你可以在控制器中使用auth:sanctum
中間件來保護你的路由:
Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
return $request->user();
});
JWT (JSON Web Tokens):
JWT是一種開放標準(RFC 7519),它定義了一種緊湊且自包含的方式,用于在各方之間安全地將信息作為JSON對象傳輸。你可以使用tymon/jwt-auth
這樣的包來實現JWT認證。
安裝步驟如下:
composer require tymon/jwt-auth
php artisan vendor:publish --provider="Tymon\JWTAuth\Providers\LaravelServiceProvider"
php artisan migrate
發行JWT令牌通常在用戶登錄時進行,然后在每個請求的頭部攜帶這個令牌進行認證。
選擇哪種方法取決于你的具體需求。Passport提供了最完整的OAuth2實現,而Sanctum則是一個更輕量級的選擇,適合于簡單的API。JWT則是一種通用的認證機制,可以在不同的系統和語言之間輕松交換認證信息。