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

Laravel Passport调用createToken未将令牌存入oauth_access_tokens表问题

问题原因

核心原因是你的App\Models\User模型引入了错误的HasApiTokens trait:

  • Laravel 新版本默认预装了Sanctum认证组件,默认User模型会引入Laravel\Sanctum\HasApiTokens trait,这个trait提供的createToken方法会将令牌存储到personal_access_tokens表中,返回的令牌结构也是你接口返回的数组格式。
  • 你要使用Passport的令牌生成逻辑,需要替换为Passport提供的同名trait,它的createToken方法才会将令牌写入oauth_access_tokens表。

修复步骤

  1. 修改App\Models\User文件的trait引用
    找到User类顶部的引用代码,将:
use Laravel\Sanctum\HasApiTokens;

替换为Passport的对应trait:

use Laravel\Passport\HasApiTokens;
  1. 确认API守卫配置
    打开config/auth.php,检查guards节点下的api守卫驱动是否设置为passport:
'guards' => [
    'web' => [
        'driver' => 'session',
        'provider' => 'users',
    ],
    'api' => [
        'driver' => 'passport',
        'provider' => 'users',
        'hash' => false,
    ],
],
  1. 清理缓存验证效果
    运行命令清理配置缓存:
php artisan config:clear

重新调用注册接口,此时生成的令牌会自动写入oauth_access_tokens表,返回的accessToken也会是Passport生成的标准JWT格式长字符串。


内容的提问来源于stack exchange,提问作者Barraaa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 13:57:05