0

我一直在开发一个基于多重身份验证的应用程序,我需要logout根据用户的防护重定向到一个动态位置。问题是当我尝试检查当前的身份验证保护时;它总是返回假。我已经覆盖了默认的注销功能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');
    }
}
4

1 回答 1

2

使用 laravel native auth,没有其他解决方案,只能循环遍历所有警卫以找到您需要的。

你可以让它更“干净”和动态

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');
    }
}
于 2019-09-05T11:34:31.063 回答