【问题标题】:Laravel sanctum getting wrong userLaravel sanctum 得到错误的用户
【发布时间】:2021-06-10 11:31:23
【问题描述】:

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

调试

  1. 我已在存储中从loginstored 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);
    }

路线

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

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

更新

这是邮递员尝试的时候

使用用户postman@test.com登录

接收admin@admin.com的用户信息

【问题讨论】:

  • Auth::user()一样吗?
  • @porloscerrosΨ 是的,它是一样的。

标签: laravel laravel-sanctum


【解决方案1】:

已解决

问题是我将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();
});

【讨论】:

    【解决方案2】:
     $token = $user->createToken($request->deviceName)->plainTextToken;
     $user['token'] = $token;
    

    使用这样的方法在用户登录/注册时创建一个关联的令牌,然后在 $user['token'] 中添加新密钥,然后返回响应槽资源

    【讨论】:

    • 仍然得到错误的结果加上$token = 我们正在将令牌附加到用户,$user['token'] 什么都不做。
    猜你喜欢
    • 2021-09-29
    • 2021-07-29
    • 1970-01-01
    • 2021-07-04
    • 2020-08-08
    • 2020-07-28
    • 2022-11-24
    • 2020-11-06
    • 2020-07-23
    相关资源
    最近更新 更多