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

Laravel Passport调用createToken未返回哈希令牌仅返回数据库对象求助

你遇到的这个问题90%以上的概率是User模型中引入的HasApiTokens trait来源错误,默认新建Laravel项目预引入的是Sanctum组件的同名trait,和Passport的trait逻辑完全不同,才会导致createToken返回的结果没有accessToken属性,你可以按照以下步骤修复:

第一步:修正User模型的trait引入

找到app/Models/User.php文件,调整头部的引用代码,替换掉Sanctum的HasApiTokens:

// 注释或删除原Sanctum的错误引用
// use Laravel\Sanctum\HasApiTokens;
// 替换为Passport的对应trait
use Laravel\Passport\HasApiTokens;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;

class User extends Authenticatable
{
    use HasApiTokens, HasFactory, Notifiable;

    // 原有模型其他逻辑保持不变
}

第二步:清理缓存生效配置

执行以下命令清空项目缓存,避免旧配置干扰:

php artisan config:clear
php artisan cache:clear
composer dump-autoload

可选优化(Passport 11.x及以上版本适用)

如果你使用的是Passport 11.x及以上的版本,AuthServiceProvider中的Passport::routes()配置已经不需要手动添加,可以直接删除该行,Passport会自动注册所需的路由。

修改完成后你原来的控制器代码不需要改动,$user->createToken('Laravel Password Grant Client')->accessToken就能正常返回可用于接口校验的明文哈希令牌了。

内容的提问来源于stack exchange,提问作者Rifat Al- Ashwad

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 05:42:01