登录后,我需要根据其角色将用户重定向到其他位置。
逻辑很简单。我试图将其放在Nova redirectPath()
的{{1}}函数中,但是我的行为非常复杂-有时登录后到达正确的位置,有时Nova会将我重定向到面板。
有什么主意吗?
答案 0 :(得分:1)
经过几个小时的调查,我发现解决方案非常简单。
我要做的就是向nova LoginController添加以下功能:
protected function sendLoginResponse(Request $request)
{
$request->session()->regenerate();
$this->clearLoginAttempts($request);
$redirectPath = $this->redirectPath();
redirect()->setIntendedUrl($redirectPath);
return redirect()->intended($redirectPath);
}
说明:
此功能在trait AuthenticatesUsers中实现。
intended
函数(Redirector
类的成员)基于先前预定的位置(如果不存在)基于给定的URL创建重定向响应。
如果会话中未设置url.intended
,则用户将被重定向到LoginController::redirectPath
生成的url。 但是,如果会话中确实存在url.intended
条目,我们需要将其删除以强制将用户重定向到我们感兴趣的网址。
我看到的唯一问题是,我们失去了将用户重定向到他注销之前所在页面的功能。因此,选择开发人员是一个简单的选择……