我需要使用网址在锦标赛中注册:
http://laravel.dev/tournaments/1/register/
此URL位于中间件'auth'中,因此如果用户未登录,则会将其重定向到登录/页面。
我需要的是重定向到
http://laravel.dev/tournaments/1/register/
登录后。
在我的routes.php中,我有:
Route::get('tournaments/{tournamentId}/register', 'TournamentController@register');
我被告知要使用
redirect()->intended
但我不知道该怎么做。
在一般情况下,用户将被重定向到/ admin,但在这种情况下,我希望他继续进行主要操作(注册锦标赛)......
我正在使用内置特征进行登录,所以我在登录时检查了系统做了什么,并且已经使用了这个功能:
protected function handleUserWasAuthenticated(Request $request, $throttles)
{
if ($throttles) {
$this->clearLoginAttempts($request);
}
if (method_exists($this, 'authenticated')) {
return $this->authenticated($request, Auth::guard($this->getGuard())->user());
}
return redirect()->intended($this->redirectPath());
}
事情是它会将我重定向到默认路径,而不是动态路径......
答案 0 :(得分:1)
您应该了解重定向到和目标重定向
之间的区别Redirect Intended: redirects the user to where they were originally going
Redirect To: Redirect the user to the page **YOU** specify them to go.
答案 1 :(得分:0)
要检查的事项:
使用浏览器的检查元素网络功能来跟踪重定向 - 可能有几个,这有助于消除混淆。
intended()
方法在重定向前一个时需要调用guest()
。这发生在Authenticate
中间件中,但是
如果您正在使用其他一些中间件(例如中间件来捕获并将管理员重定向到管理区域),则可能首先触发并重定向而不使用guest()
。
使用AuthenticatesUsers
特征的控制器是否实现了authenticated
方法?如果是这样,将返回而不是redirect()->intended()
。