2016-12-30 128 views
0

我已经改变了受保护的$ redirectTo ='/ tasks';在LoginController和RegisterController中。如何在Laravel 5.3中登录和注销后更改重定向路径?

public function handle($request, Closure $next, $guard = null) 
{ 
    if (Auth::guard($guard)->check()) { 
     return redirect('/tasks'); 
    } 

    return $next($request); 
} 

即使我做了这些改变,没有什么作品,并且页面重定向到/登录路径: 另外,我已经在RedirectIfAuthenticated中间件如下改变了重定向路径。

回答

0

这是因为$redirectTo将在您登录后生效。首先您需要登录。这就是为什么它发送你到/login的路径。因此,如果您想要在LoginRegistration之后更改其重定向的位置,请更改这些$redirectTo属性。如果您不想让用户登录,则应该删除该路线的中间件auth

编辑: 那么你已经错过的是laravel重定向你回到预期的页面,如果没有,则它会重定向到$ redirectTo。因此,如果您尝试访问主页并且需要经过身份验证的用户,那么在登录后它会重定向回主页,而不是/任务,因为这是您要去的地方。如果你想总是重定向到那个路径而不是预期的路径,你可以做如下的事情。

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

    $this->clearLoginAttempts($request); 

    return redirect()->to($this->redirectTo); 
} 

将此代码添加到您的LoginController,你总是会被重定向到$redirectTo

+0

我只是想被重定向到/任务路径。如何做到这一点? – bruce

+0

你是什么意思?你的意思是总是重定向到那条路? –

+0

如果用户登录成功,那么我需要重定向到该路径,例如/任务。 – bruce

0

看到你的代码后,我得到你的IF语句没有返回true。你必须先看看它是什么回来。此外,只需测试代码,无需任何条件就可以重定向到您想要的位置。

此外,我在我的应用程序登录后使用此代码进行重定向。

public function handle($request, Closure $next) 
{ 
    if ($this->auth->check()) { 
     return redirect('/home'); 
    } 

    return $next($request); 
} 
+0

在Laravel的官方文档中,它表示您只需要更改$ redirectTo属性。但这不是那种方式。即使我更换了中间件,它也无法正常工作。我不知道为什么你必须把代码Farzin Farzanehnia建议。 – bruce