Laravel 10 Sanctum认证:$request->user()->id返回首个登录用户而非当前用户
Laravel 10 Sanctum 令牌认证返回错误用户ID问题排查
检查路由中间件配置
确保目标路由正确应用了auth:sanctum中间件,未正确配置中间件会导致认证逻辑异常,复用旧用户信息:Route::get('/user', [UserController::class, 'getUser'])->middleware('auth:sanctum');清除应用缓存
本地开发若执行过配置缓存命令,可能固化认证逻辑,执行以下命令清除各类缓存:php artisan config:clear php artisan cache:clear php artisan route:clear校验令牌生成与携带逻辑
登录时必须为当前用户生成新令牌,避免复用旧令牌:public function login(Request $request) { if (!Auth::attempt($request->only('email', 'password'))) { return response()->json(['message' => '无效凭证'], 401); } $user = Auth::user(); $token = $user->createToken('auth-token')->plainTextToken; return response()->json(['token' => $token]); }前端请求时必须在
Authorization头中携带当前用户的令牌:Bearer {token},若前端缓存旧令牌,后端会识别到错误用户。检查本地服务器缓存
若使用php artisan serve、Valet等本地服务器,进程级缓存可能导致用户上下文复用,需关闭服务器后重新启动。确认Sanctum配置正确性
检查config/sanctum.php中的stateful域名配置,确保包含本地开发域名,错误配置会引发会话混淆:'stateful' => explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf( '%s%s', 'localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1', env('APP_URL') ? ','.parse_url(env('APP_URL'), PHP_URL_HOST) : '' ))),
内容的提问来源于stack exchange,提问作者ndotie
相关产品推荐
相关产品推荐

