管理员重定向到后退按钮后的/ home单击
问题描述:
我有这样的管理中间件:管理员重定向到后退按钮后的/ 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中间件组下。
答
这样做的原因是因为用户现在通过身份验证。
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);
}
希望这有助于!
答
那是因为你是authenticated
。当你按回来按钮时,它意味着从/admin
开始,你想回到/login
,但在调用视图之前,它会检查用户登录或不登录的位置。既然你还没有注销,并登录,您将被重定向到默认路径/home
..
在Auth
文件夹中有一个LoginController
在这里你可以看到这行
protected $redirectTo = '/home';
如果你想添加逻辑,你可以在这里改变它。这是默认路径。