我想根据用户的角色将用户重定向到不同的路由 . 我的应用程序中有两个安全区域,“admin”和“dashboard” . 我想检查用户是否经过身份验证,然后重定向到预期,但如果用户有角色编辑器,则应将其重定向到仪表板,否则如果他有角色,则应重定向到管理区域 .
我在登录时使用了AuthenticatesAndRegistersUsers类 . 我在自定义控制器上有这个:
/**
* The default redirecTo path.
*
*/
protected $redirectTo = '/dashboard';
因此,当用户通过身份验证时,它将被重定向到仪表板,但我想检查预期的URL是否在管理组路由上,如果用户具有管理员角色,则应将其重定向到管理区域 .
我正在使用此中间件重定向到登录:
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);
}
3 回答
您可以覆盖
AuthController
中特征使用的redirectPath
方法,以注入您需要的逻辑 . 像这样的东西:EDIT:
Laravel在
AuthenticatesAndRegistersUsers
trait中使用以下声明在成功登录后重定向用户:这将尝试将用户重定向到先前尝试的URL .
如果您需要在用户登录时将用户重定向到正确的位置,那么最好通过向身份验证中间件添加更多逻辑来实现 .
我用这个 . 您还需要修改中间件 RedirectIfAuthenticated ,以便赢得't route home. Just to different user'仪表板 .