Laravel9中Auth::user()返回null问题求助
问题原因
你注册成功后仅创建了用户记录,但没有自动登录该用户。Laravel的Auth::user()依赖当前会话的登录状态获取用户信息,未执行登录操作时,会话中无用户凭证,因此返回null。
解决方案
修改RegisterController的store方法,在创建用户后调用Auth::login()完成自动登录:
- 在
RegisterController顶部导入Auth门面:
use Illuminate\Support\Facades\Auth;
- 修改
store方法,将创建的用户实例赋值给变量,再执行登录:
public function store(Request $request) { $this->validate($request, [ 'name'=> 'required|max:255', 'username' => 'required|max:255', 'email' => 'required|email|max:255', 'password' => 'required|confirmed', ]); // 创建用户并保存到变量 $user = User::create([ 'name' => $request->name, 'username' => $request->username, 'email' => $request->email, 'password' => Hash::make($request->password), ]); // 自动登录刚创建的用户 Auth::login($user); return redirect()->route('dashboard'); }
额外建议
为确保/dashboard路由仅对已登录用户开放,给该路由添加auth中间件:
Route::get('/dashboard', [DashboardController::class,'index'])->name('dashboard')->middleware('auth');
未登录用户访问该路由时会自动重定向到登录页,符合Laravel安全规范。
内容的提问来源于stack exchange,提问作者Gabriel Rogath
相关产品推荐
相关产品推荐

