我正在使用Auth::guard
来检查注销控制器中正在使用哪个防护。如果是管理员守卫,那么我希望重定向到管理员登录,否则它将转到用户登录。
我的期望是Auth::guard('admin')
检查后卫是否确实属于admin类型。如果是这样,它将使用if语句进行。
但是,它没有像我期望的那样工作。我用dd(Auth::guard())
来检查我的后卫,它绝对是web
后卫。但无论如何,Auth::guard('admin')
仍在让它通过。
我做错了什么?我的假设是Auth::guard
错了吗?非常感谢!
if (Auth::guard('admin') ) {
$this->guard()->logout();
$request->session()->flush();
$request->session()->regenerate();
return redirect('admin-login');
}
else {
$this->guard()->logout();
$request->session()->flush();
$request->session()->regenerate();
return redirect('/login');
}
答案 0 :(得分:0)
当您使用Auth::guard('admin')
时,它会抓取该守卫(如果存在)它不会检查当前是否正在使用该守卫。由于那个守卫确实存在if (Auth::guard('admin') )
总是如此。
要检查当前是否正在使用该防护,您可以执行if(Auth::getDefaultDriver() === 'admin')
。当您使用auth:admin
中间件时,它会将admin
设置为默认防护,因此您可以对此进行检查。
更干嘛的方法是:
$this->guard()->logout();
$request->session()->flush();
$request->session()->regenerate();
return redirect(Auth::getDefaultDriver() === 'admin' ? '/admin-login' : '/login')