在Debian上使用Laravel实现API接口认证,通常会采用以下几种方法:
Passport: Laravel Passport是一个完整的OAuth2服务器实现,它提供了访问令牌、个人访问令牌、密码授权和客户端凭证授权等功能。要在Debian上使用Laravel Passport进行API认证,请按照以下步骤操作:
安装Laravel Passport:
composer require laravel/passport
运行迁移以创建必要的数据库表:
php artisan migrate
在AuthServiceProvider
中注册Passport:
use Laravel\Passport\Passport;
public function boot()
{
$this->registerPolicies();
Passport::routes();
Passport::tokensExpireIn(now()->addDays(15));
Passport::refreshTokensExpireIn(now()->addDays(30));
}
在config/auth.php
中将默认的认证驱动更改为passport
:
'guards' => [
'api' => [
'driver' => 'passport',
'provider' => 'users',
],
],
确保你的API路由使用了auth:api
中间件:
Route::middleware('auth:api')->get('/user', function (Request $request) {
return $request->user();
});
Sanctum: Laravel Sanctum是一个轻量级的解决方案,用于保护API免受未经授权的访问。它适用于SPA(单页应用程序)、移动应用程序和其他非浏览器客户端。要在Debian上使用Laravel Sanctum进行API认证,请按照以下步骤操作:
安装Laravel Sanctum:
composer require laravel/sanctum
发布Sanctum的配置文件:
php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"
运行迁移以创建必要的数据库表:
php artisan migrate
在config/cors.php
中配置CORS,以允许来自前端的请求:
'paths' => ['api/*', 'sanctum/csrf-cookie'],
在app/Http/Middleware/EnsureFrontendRequestsAreStateful.php
中添加以下路由:
protected $frontEndHttpMethods = [
'GET',
'HEAD',
'PUT',
'PATCH',
'POST',
'DELETE',
];
在config/sanctum.php
中配置Sanctum:
'api_token_validity' => 60,
确保你的API路由使用了auth:sanctum
中间件:
Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
return $request->user();
});
在前端,当你发送登录请求时,还需要获取并存储CSRF令牌。你可以通过访问/sanctum/csrf-cookie
路由来获取这个令牌。
选择哪种认证方式取决于你的具体需求。Passport提供了完整的OAuth2实现,适合需要与其他系统集成的场景。而Sanctum则更适合简单的API认证,尤其是对于SPA和移动应用。