如果用户已登录,则认证后redirectPath无法正常工作

时间:2015-08-03 13:50:38

标签: laravel laravel-5

我刚刚使用artisan生成一个新的laravel应用程序后开始。按照关于Authentication的官方文档中提供的说明,我添加了登录和注册表单。

由于我希望用户在身份验证后被重定向到/dashboard路由,因此我已将以下内容添加到AuthController

protected $this->redirectPath = '/dashboard';
protected $this->redirectTo = '/dashboard';

事情似乎按预期工作。成功登录后,用户将被带到/dashboard

当用户已经登录(使用/auth/login路线)并再次通过浏览器的地址栏导航到/auth/login路线时,会出现问题。在这种情况下,laravel会将用户重定向回/home,这条路线当然没有在我的应用中定义。因此,我在浏览器中显示以下错误:

NotFoundHttpException in RouteCollection.php line 143:

in RouteCollection.php line 143
at RouteCollection->match(object(Request)) in Router.php line 746
at Router->findRoute(object(Request)) in Router.php line 655
at Router->dispatchToRoute(object(Request)) in Router.php line 631
at Router->dispatch(object(Request)) in Kernel.php line 237
at Kernel->Illuminate\Foundation\Http\{closure}(object(Request))

我原本希望用户直接转到dashboard。任何帮助表示赞赏。

3 个答案:

答案 0 :(得分:0)

默认情况下,它由内置的RedirectIfAuthenticated中间件处理,有趣的部分是

if ($this->auth->check()) {
    return new RedirectResponse(url('/home'));
}

答案 1 :(得分:0)

RedirectsUsers类是一个特征,因此您可以覆盖redirectPath中的AuthController方法,只需复制方法并将其粘贴到AuthController制作中你需要的修改,比如这样。

/**
 * Get the post register / login redirect path.
 *
 * @return string
 */
public function redirectPath()
{
    return route('home');
}

答案 2 :(得分:0)

解决了

解释:因为在Laravel默认重定向路径是/,所以我利用它并通过将中间件应用它来创建路由并添加了条件/逻辑,使得:

“如果用户已登录,则将其重定向到控制器操作。”

   Route::get('/', ['middleware' => 'auth', function (){ 

    if(Auth::check())
    {
        return redirect()->action('BrandController@index');
      //return redirect('/')
    }
    }]);

希望这可以解决您的问题。