Laravel sainttum 获取错误的用户

maf*_*tis 1 laravel laravel-sanctum

我已经使用我的应用程序记录了用户,当我发送用户令牌以从服务器获取数据时,它返回错误用户的数据。

调试

  1. login我已经在存储中逐行调试了我的应用程序,stored token所有这些都显示了正确的令牌等。
  2. 我已经逐行调试了我的API login function代码,它获得了正确的用户并将令牌分配给它。

代码

public function index(Request $request)
    {
        $user = $request->user();
        Log::info($user); // wrong user will be printed in log file
        $will = Will::where('user_id', $user->id)->with(['documents', 'videos', 'user'])->first();
        return response()->json([
            'data' => new WillResource($will),
            'message' => 'Data is ready.'
        ], 200);
    }
Run Code Online (Sandbox Code Playgroud)

路线

Route::group(['middleware' => 'auth:sanctum', 'prefix' => 'userdata'], function() {
   Route::get('mywill', 'Api\WillController@index');
});
Run Code Online (Sandbox Code Playgroud)

知道为什么 sainttum 返回错误的用户数据吗?

更新

这是我通过邮递员尝试的时候

使用用户登录postman@test.com 一

接收用户信息admin@admin.com

二

maf*_*tis 5

解决了

问题是我正在使用uuid我的用户表,并且personal_access_tokens表是可变形的id,所以我将其更改uuidMorphs为现在它正在工作

Schema::create('personal_access_tokens', function (Blueprint $table) {
  $table->bigIncrements('id');
  $table->uuidMorphs('tokenable'); // <--- here
  $table->string('name');
  $table->string('token', 64)->unique();
  $table->text('abilities')->nullable();
  $table->timestamp('last_used_at')->nullable();
  $table->timestamps();
});
Run Code Online (Sandbox Code Playgroud)