如何检查 LoginController 中的当前守卫?
How to check current guard in LoginController?
我一直在开发基于多重身份验证的应用程序,我需要根据用户的保护重定向到 logout
上的动态位置。问题是当我尝试检查当前的 auth guard 时;它总是 returns 错误。我已经覆盖默认 LoginController
.
中的注销功能
LoginController.php
class LoginController extends Controller
{
use AuthenticatesUsers;
public function logout()
{
if (Auth::guard('manager')->check()) {
Auth::logout();
return redirect('/manager/login');
}
if (Auth::guard('employee')->check()) {
Auth::logout();
return redirect('/login');
}
Auth::logout();
return redirect('/login');
}
public function __construct()
{
$this->middleware('guest')->except('logout');
$this->middleware('guest:manager')->except('logout');
}
}
使用laravel native auth,除了循环遍历所有守卫以找到您需要的那个,别无他法。
你可以让它更"clean"和动态
public function logout()
{
$guards = ['manager', 'employee', ''];
foreach ($guards as $guard) {
if(Auth::guard($guard)->check()) {
Auth::guard($guard)->logout();
return $this->redirectLoggedOut($guard);
}
}
return redirect('/login');
}
public function redirectLoggedOut($guard)
{
switch($guard) {
case 'manager':
return redirect('/manager/login');
default:
return redirect('/login');
}
}
我一直在开发基于多重身份验证的应用程序,我需要根据用户的保护重定向到 logout
上的动态位置。问题是当我尝试检查当前的 auth guard 时;它总是 returns 错误。我已经覆盖默认 LoginController
.
LoginController.php
class LoginController extends Controller
{
use AuthenticatesUsers;
public function logout()
{
if (Auth::guard('manager')->check()) {
Auth::logout();
return redirect('/manager/login');
}
if (Auth::guard('employee')->check()) {
Auth::logout();
return redirect('/login');
}
Auth::logout();
return redirect('/login');
}
public function __construct()
{
$this->middleware('guest')->except('logout');
$this->middleware('guest:manager')->except('logout');
}
}
使用laravel native auth,除了循环遍历所有守卫以找到您需要的那个,别无他法。
你可以让它更"clean"和动态
public function logout()
{
$guards = ['manager', 'employee', ''];
foreach ($guards as $guard) {
if(Auth::guard($guard)->check()) {
Auth::guard($guard)->logout();
return $this->redirectLoggedOut($guard);
}
}
return redirect('/login');
}
public function redirectLoggedOut($guard)
{
switch($guard) {
case 'manager':
return redirect('/manager/login');
default:
return redirect('/login');
}
}