我想根据用户的角色将他们重定向到不同的路线。我的应用程序中有两个安全区域,“管理”和“仪表板”。我想检查用户是否经过身份验证,然后重定向到预期,但如果用户具有角色编辑器,则应将其重定向到仪表板,否则,如果他具有管理员角色,则应将其重定向到管理区域。
我在登录中使用 AuthenticatesAndRegistersUsers 类。我的自定义 Controller 上有这个:
/**
* The default redirecTo path.
*
*/
protected $redirectTo = '/dashboard';
因此,当用户通过身份验证时,它将被重定向到仪表板,但我想检查预期的网址是否在管理员组路由上,以及用户是否具有管理员角色,它应该被重定向到管理区域。
我正在使用此中间件重定向到登录:
public function handle($request, Closure $next)
{
if ($this->auth->guest())
{
if ($request->ajax())
{
return response('Unauthorized.', 401);
}
else
{
return redirect()->guest('auth/login');
}
}
return $next($request);
}
最佳答案
您可以覆盖 redirectPath
您 AuthController
中的特征使用的方法注入(inject)您需要的逻辑。像这样的事情:
/**
* Get the post register / login redirect path.
*
* @return string
*/
public function redirectPath()
{
// Logic that determines where to send the user
if (\Auth::user()->type == 'admin') {
return '/admin';
}
return '/dashboard';
}
编辑:
Laravel 在 AuthenticatesAndRegistersUsers
中使用以下声明成功登录后重定向用户的特征:
return redirect()->intended($this->redirectPath());
这将尝试将用户重定向到之前尝试过的 URL。
如果您需要在用户登录后将用户重定向到正确的位置,最好通过向身份验证中间件添加更多逻辑来完成。
关于laravel - 如何根据目标用户的角色将其重定向到不同的路线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31012985/