Laravel Nova 登录后重定向到自定义路径

guy*_*oni 5 laravel-nova

我需要在登录后根据用户的角色将用户重定向到不同的位置。

逻辑很简单。我尝试将其放入redirectPath()Nova 中的功能LoginController.php,但我有一个非常奇怪的行为 - 有时登录后我到达正确的位置,有时 Nova 将我重定向到面板。

任何想法?

guy*_*oni 4

经过几个小时的调查,我发现解决方案非常简单。

我所要做的就是将以下函数添加到 nova LoginController 中:

protected function sendLoginResponse(Request $request)
{
    $request->session()->regenerate();

    $this->clearLoginAttempts($request);

    $redirectPath = $this->redirectPath();
    redirect()->setIntendedUrl($redirectPath);

    return redirect()->intended($redirectPath);
}
Run Code Online (Sandbox Code Playgroud)

解释:

该函数在特征AuthenticatesUsers中实现。

intended函数(Redirector类成员)根据先前预期的位置创建重定向响应,如果不存在 - 则根据给定的 url。

如果url.intended会话中没有设置,用户将被重定向到LoginController::redirectPath. 但是,如果会话中确实存在 的条目url.intended,我们需要将其删除,以强制将用户重定向到我们感兴趣的 url。

我看到的唯一问题是我们失去了将用户重定向到他注销之前所在页面的功能。因此,作为开发人员,这是一个简单的选择问题......