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

Laravel调用auth()->login()后未保存会话,Auth::user()返回null

Laravel Socialite Google登录后会话未保存问题

在Laravel项目中使用Socialite实现Google登录,重定向与回调功能运行正常,但调用auth()->login()后会话未被持久化。在LoginController的callback方法内,Auth::user()可正常获取用户信息;但跳转至DebugController的__invoke方法后,Auth::user()返回null。

相关代码

LoginController

class LoginController extends Controller
{
    public function callback(Request $request) {
        $googleUser = Socialite::driver('google')->user();
        $userLogin = [
            'id' => $googleUser->getId(),
            'name' => $googleUser->getName(),
            'email' => $googleUser->getEmail(),
            'avatar' => $googleUser->getAvatar(),
        ];
        $email = $userLogin['email'];
        $user = User::updateOrCreate(
            ['email' => $email],
            $userLogin
        );
        auth()->login($user);
        // 此处Auth::user()可正常获取数据
        // dd(auth()->user());
        return redirect()->route('debug');
    }
}

DebugController

class DebugController extends Controller {
    public function __invoke() {
        $user = auth()->user();
        // 此处返回null
        dd($user);
    }
}

解决方案

  • 验证用户模型合规性
    确保User模型继承Illuminate\Foundation\Auth\User或实现Illuminate\Contracts\Auth\Authenticatable接口,自定义模型需保证getAuthIdentifier()等核心方法正确返回用户主键。

  • 检查会话驱动配置
    查看.env文件的SESSION_DRIVER配置,若使用database或redis驱动,需确认对应服务/数据表正常运行。可临时切换为file驱动测试是否为驱动问题。

  • 确认路由中间件
    保证DebugController的路由包含在web中间件组内,该组包含StartSession、EncryptCookies等会话必需的中间件。若路由仅使用api中间件,会因无会话支持导致认证失效。示例路由配置:

    Route::get('/debug', DebugController::class)->name('debug')->middleware('web');
    
  • 手动刷新会话
    在auth()->login()后调用session()->regenerate(),刷新会话ID的同时确保会话数据被正确写入:

    auth()->login($user);
    session()->regenerate();
    return redirect()->route('debug');
    
  • 检查用户主键类型
    若User模型使用非整数主键(如UUID),需在模型中添加以下配置:

    public $incrementing = false;
    protected $keyType = 'string';
    

    避免Laravel默认按整数处理主键导致会话关联失败。

  • 清除缓存与旧会话
    执行以下命令清除配置缓存和过期会话文件:

    php artisan config:clear
    php artisan cache:clear
    rm -rf storage/framework/sessions/*
    

内容的提问来源于stack exchange,提问作者Võ Bảo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 19:41:08