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

Laravel自定义登录中Auth::user()返回null的问题修复方案

问题分析与解决

你的问题出在自定义登录逻辑没有通过Laravel的认证系统完成用户认证——你只是手动把用户ID存入session,但Laravel的Auth::user()是从认证系统维护的用户实例中获取数据,而非直接读取你自定义的session键。

修复步骤

  1. 替换自定义session存储为Laravel认证方法
    删掉手动存session的代码,改用Laravel官方提供的认证方法完成登录:
    public function check(LoginRequest $request)
    {
        $userInfo = User::where('email', '=', $request->email)->first();
    
        if(!$userInfo){
            return back()->with('message', 'We do not recognize your email address');
        } 
        
        if(Hash::check($request->password, $userInfo->password)){
            // 用Laravel的Auth登录方法替代手动存session
            Auth::login($userInfo);
            // 也可以用ID直接登录:Auth::loginUsingId($userInfo->id);
            
            dd(Auth::user()); // 现在就能正常获取用户实例了
            // return redirect('home');
        } else {
            return back()->with('message', 'Incorrect password');
        }
    }
    
  2. 确保用户模型符合认证要求
    你的User模型需要继承Laravel的认证基类,确保实现了认证接口(继承基类会自动实现),示例:
    namespace App\Models;
    
    use Illuminate\Foundation\Auth\User as Authenticatable;
    
    class User extends Authenticatable
    {
        // 模型其他代码...
    }
    

原代码失效原因

Laravel的认证系统会维护专属的session数据(默认以login_web_*开头),并通过认证守卫管理用户状态。你手动存入的isUsersession键不在Auth系统的识别范围内,因此Auth::user()无法获取到用户数据。

内容的提问来源于stack exchange,提问作者Newbi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 11:33:01