登录后如何自定义重定向

时间:2019-02-03 05:58:22

标签: php laravel laravel-nova

我在我的应用程序中使用cms nova。我想根据用户属性配置重定向。在文档中找不到任何内容。也许我只是不明白。请帮助理解。

据我了解,使用Nova时,它将接管身份验证过程。

4 个答案:

答案 0 :(得分:0)

添加以下受保护的方法来覆盖app/Http/Controllers/Auth/LoginController.php文件中的默认重定向:

protected function authenticated(Request $request, User $user)
{
    return redirect("/redirect_users_after_login");
}

答案 1 :(得分:0)

您是否使用Laravel Auth进行身份验证? 如果是,您可以根据需要修改可用的功能广告重定向。 像这样:

在您登录Controller时:

protected function authenticated(Request $request, $user)
{
    //Check Role to user type
    if ( $user->isAdmin() ) {
        //Add redirection
        return redirect()->route('admin.route.name');
    }
    else {
      return redirect()->route('admin.route.name');
    }

}

答案 2 :(得分:0)

在这里找到了解决方案:

1)请参阅此问题的第一个答案。 (自定义登录控制器)how to login using username instead of email inlaravel nova?

2)决定本身 Laravel Nova Redirect to a custom path after login

答案 3 :(得分:0)

在供应商/Laravel/framework/src/Illuminate/Foundation/Auth/RedirectsUsers.php文件下面的代码存在

public function redirectPath()
    {

        if (method_exists($this, 'redirectTo')) {
            return $this->redirectTo();
        }


        return property_exists($this, 'redirectTo') ? $this->redirectTo : '/home';
    }

如果您在LoginController.php中将函数定义为波纹管,则可以将用户重定向到其路径

 protected $redirectTo;
    protected function redirectTo()
    {

        if(\Auth::user()->hasRole('Administrator')){
            $this->redirectTo = '/admin/overview';
            return $this->redirectTo;
        }
        else if(\Auth::user()->hasRole('Doctor')){
            $this->redirectTo = '/doctor/overview';
            return $this->redirectTo;
        }
    }

您必须做的所有事情!