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

Laravel Sanctum报错:Call to a member function createToken() on null

解决Laravel Sanctum生成Token时"Call to a member function createToken() on null"错误

出现这个错误的核心原因是$request->user()返回了null,说明当前请求没有通过身份验证,无法获取到用户实例。以下是具体解决步骤:

  • 给路由添加身份验证中间件
    创建API令牌的前提是用户已经登录,必须给该路由加上auth:sanctum中间件,确保只有已认证的用户才能访问:

    use Illuminate\Http\Request;
    
    Route::post('/tokens/create', function (Request $request) {
        $token = $request->user()->createToken($request->token_name);
    
        return ['token' => $token->plainTextToken];
    })->middleware('auth:sanctum');
    
  • 检查User模型是否引入HasApiTokens trait
    打开你的User模型文件,确认已经正确引入并使用Sanctum的HasApiTokens trait,这是用户模型能调用createToken()方法的必要条件:

    use Laravel\Sanctum\HasApiTokens;
    use Illuminate\Foundation\Auth\User as Authenticatable;
    
    class User extends Authenticatable
    {
        use HasApiTokens, HasFactory, Notifiable;
        // 其他模型代码...
    }
    
  • 确认Sanctum的安装和迁移完成
    确保你已经执行过以下命令:

    1. 运行php artisan sanctum:install生成配置文件和迁移文件
    2. 运行php artisan migrate创建personal_access_tokens数据表
  • 调整测试流程
    用Thunder Client测试时,需要先完成用户登录:

    1. 调用你的登录接口(比如/api/login),获取登录返回的认证令牌
    2. 请求/api/tokens/create时,在请求头中添加Authorization: Bearer [登录得到的令牌],同时携带token_name表单参数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 11:37:49