debian

Laravel在Debian上如何实现API接口认证

小樊
52
2025-08-22 07:35:33
栏目: 智能运维

在Debian上使用Laravel实现API接口认证,通常会采用以下几种方法:

  1. 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();
      });
      
  2. 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和移动应用。

0
看了该问题的人还看了