2017-02-19 76 views
0

我有这样的管理中间件:管理员重定向到后退按钮后的/ home单击

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中间件组下。

回答

1

这样做的原因是因为用户现在通过身份验证。

Laravel自带中间件称为RedirectIfAuthenticated这将检查用户是否authentitcated如果是重定向在别的地方。

您将需要编辑中间件是这样的:

public function handle($request, Closure $next, $guard = null) 
{ 
    if (Auth::guard($guard)->check()) { 
     return $request->user($guard)->is_admin 
      ? redirect('/admin') 
      : redirect('/home'); 
    } 

    return $next($request); 
} 

希望这有助于!

0

那是因为你是authenticated。当你按回来按钮时,它意味着从/admin开始,你想回到/login,但在调用视图之前,它会检查用户登录或不登录的位置。既然你还没有注销,并登录,您将被重定向到默认路径/home ..

Auth文件夹中有一个LoginController在这里你可以看到这行

protected $redirectTo = '/home'; 

如果你想添加逻辑,你可以在这里改变它。这是默认路径。