Laravel框架中Auth::guest()方法无法正常工作的问题求助
Laravel Guard 身份验证问题排查
我用Laravel的Guard实现身份验证,登录和登出功能都正常运行,相关代码如下:
if (Auth::guard('admin')->attempt([ 'username' => $request->username, 'password' => $request->password])) { return redirect('/admin-home'); } if (Auth::guard('admin')->check()) { Auth::guard('admin')->logout(); return redirect('/login-admin'); }
但下面的chooseLogin函数存在问题:即使用户已经登录,依然会跳转到choose_login视图,代码如下:
function chooseLogin() { if (Auth::guest()) { return view('auth.choose_login'); } else { return back(); } }
问题原因
Auth::guest()方法默认使用Laravel配置中的默认Guard(通常是web),而你在登录登出时用的是admin Guard,所以默认的guest()检查无法识别admin Guard下的登录状态,导致即便用户通过admin Guard登录了,系统仍判定为访客。
修复方案
修改chooseLogin函数,指定使用admin Guard来检查是否为访客:
function chooseLogin() { if (Auth::guard('admin')->guest()) { return view('auth.choose_login'); } else { return back(); } }
这样就能正确识别admin Guard下的登录状态,已登录用户会执行return back()而不是跳转到选择登录视图。
内容的提问来源于stack exchange,提问作者Meliodas
相关产品推荐
相关产品推荐

