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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 09:57:38