You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel Passport API令牌未按设置过期问题求助

解决Laravel Passport令牌过期不生效的问题

1. 校验配置代码的执行顺序与版本匹配

不同Passport版本的过期时间配置逻辑有差异,且必须先设置过期时间,再注册Passport路由:
如果是Passport 10及以上版本,确保AuthServiceProvider的boot方法代码顺序正确:

public function boot()
{
    $this->registerPolicies();

    // 先配置过期时间
    Passport::tokensExpireIn(now()->addMinutes(1));
    Passport::refreshTokensExpireIn(now()->addDays(30));
    Passport::personalAccessTokensExpireIn(now()->addMinutes(1));

    // 再注册Passport路由
    Passport::routes();
}

旧版本如果用Passport::tokens()链式配置,要检查语法无拼写错误。

2. 清除Laravel缓存

配置修改后缓存未清除会导致新设置不生效,执行以下命令:

php artisan config:clear
php artisan cache:clear
php artisan route:clear

3. 确认令牌类型与配置对应

  • 密码授权令牌对应tokensExpireIn配置,个人访问令牌对应personalAccessTokensExpireIn配置,别搞混类型;
  • 生成令牌时检查逻辑:比如密码授权模式生成令牌的代码是$user->createToken('Token Name')->accessToken,个人访问令牌需确保生成时关联了个人访问客户端。

4. 数据库直接验证令牌过期时间

查看oauth_access_tokens表的expires_at字段,确认新生成的令牌过期时间是否为当前时间+1分钟。如果不是,说明配置未被正确加载,回到第一步检查代码执行顺序。

5. 确认中间件与守卫配置

  • 检查config/auth.php中api守卫的驱动确实是passport:
'guards' => [
    'api' => [
        'driver' => 'passport',
        'provider' => 'users',
    ],
],
  • 确保受保护路由确实使用了auth:api中间件,无自定义中间件绕过验证:
Route::middleware('auth:api')->group(function () {
    // 受保护路由
});

内容的提问来源于stack exchange,提问作者Jack The Baker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 23:20:28