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

Laravel调用createToken无法获取accessToken加密字符串怎么办

Laravel接口认证无法正确返回Token字符串排查方案

问题核心原因:接口返回的是createToken()方法返回的令牌实例对象,而非实例下挂载的明文字符串令牌,可按以下步骤逐一排查:

  • 校验接口返回的赋值逻辑
    确认给响应token字段赋值时,确实读取了accessToken属性,不要直接返回createToken()的调用结果。
    错误写法示例:
    // 直接返回实例会输出结构化对象,不符合预期
    $tokenResult = $user->createToken('app');
    return ['token' => $tokenResult];
    
    正确写法示例:
    // 读取accessToken属性才会返回预期的加密字符串
    $plainTextToken = $user->createToken('app')->accessToken;
    return ['token' => $plainTextToken];
    
  • 校验User模型的Token配置
    如果你用Sanctum做接口认证,确认User模型正确引入Laravel\Sanctum\HasApiTokens特征;如果用Passport,确认引入的是Laravel\Passport\HasApiTokens特征,特征引入错误、命名空间写错都会导致属性读取异常。
  • 校验API资源层的字段配置
    如果你使用Eloquent API Resource做响应格式化,不要把token字段放到关联加载逻辑(比如$this->whenLoaded())中——accessToken是动态返回的明文字段,不是模型关联关系,放到关联加载逻辑中会读取失败,最终返回结构化的Token模型数据。
  • 校验全局响应处理逻辑
    检查项目中是否配置了全局Response宏、响应中间件,对返回内容做了自动对象递归转数组处理,导致原本赋值的字符串Token被替换为Token实例的结构化内容。

预期正确返回效果参考:
预期返回效果参考

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 20:42:17