如何在Laravel

时间:2016-01-25 22:50:37

标签: laravel laravel-5 routes

我需要使用网址在锦标赛中注册:

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());
}

事情是它会将我重定向到默认路径,而不是动态路径......

2 个答案:

答案 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()