Laravel在Debian上如何实现API接口认证
在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和移动应用。