Laravel sanctum 获取错误的用户
Laravel sanctum getting wrong user
我已经使用我的应用程序记录了用户,当我发送用户令牌以从服务器获取数据时,它返回了错误用户的数据。
调试
- 我已经在存储中从
login
到 stored token
逐行调试了我的应用程序,所有这些都显示了正确的令牌等。
- 我已经逐行调试了我的
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
的用户信息
$token = $user->createToken($request->deviceName)->plainTextToken;
$user['token'] = $token;
使用这样的方法在用户登录/注册时创建关联令牌,然后在 $user['token'] 中添加新密钥,然后 return 通过资源
响应
已解决
问题是我正在为我的用户使用 uuid
table 和 personal_access_tokens
table 可通过 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();
});
我已经使用我的应用程序记录了用户,当我发送用户令牌以从服务器获取数据时,它返回了错误用户的数据。
调试
- 我已经在存储中从
login
到stored token
逐行调试了我的应用程序,所有这些都显示了正确的令牌等。 - 我已经逐行调试了我的
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
$token = $user->createToken($request->deviceName)->plainTextToken;
$user['token'] = $token;
使用这样的方法在用户登录/注册时创建关联令牌,然后在 $user['token'] 中添加新密钥,然后 return 通过资源
响应已解决
问题是我正在为我的用户使用 uuid
table 和 personal_access_tokens
table 可通过 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();
});