管理员在单击后退按钮后重定向到/ home

时间:2017-02-19 10:08:02

标签: laravel laravel-5.3

我有这个管理中间件:

public function handle($request, Closure $next, $guard = null)
{
    if (Auth::check()) {
        if ($request->user()->is_admin == 1) {
            return $next($request);
        }

        return redirect('/login');
    } else {
        return redirect('/login');
    }
}

在logincontroller中,如果用户是管理员,则会将其重定向到/admin.,如果没有重定向到/home.

protected function authenticated()
{
    if (auth()->user()->is_admin == 1) {
        return redirect('/admin');
    } else {
        return redirect('/home');
    }
}

现在,当管理员登录时,系统会将其重定向到/admin,但在点击浏览器的后退按钮后,它们会显示在/home中。我怎么能不将管理员重定向到/home/home在auth中间件组下。

2 个答案:

答案 0 :(得分:1)

原因是因为该用户现在已经过身份验证。

Laravel附带了一个名为WRITE_EXTERNAL的中间件,它将检查用户是否已经过验证,如果是,则将其重定向到其他地方。

您需要将该中间件编辑为:

RedirectIfAuthenticated

希望这有帮助!

答案 1 :(得分:0)

那是因为你是/admin。当您按下后退按钮时,它意味着从/login返回/home,但在调用视图之前,会检查用户登录的位置。由于您尚未注销并已登录,因此您将被重定向到默认路径Auth ..

LoginController文件夹中有一个protected $redirectTo = '/home'; ,您可以在其中看到此行

g

如果您想添加逻辑,可以在此处更改。这是默认路径。