2016-01-25 31 views
0

我需要在URL中的比賽來註冊:如何使用預期的功能在Laravel

http://laravel.dev/tournaments/1/register/ 

此URL是在中間件「權威性」,因此,如果用戶沒有登錄,他將被重定向到登錄/頁面。

我需要的是重定向到

http://laravel.dev/tournaments/1/register/ 

登錄後。

在我的routes.php文件,我有:

Route::get('tournaments/{tournamentId}/register', '[email protected]'); 

我被告知使用

redirect()->intended 

,但我不知道該怎麼做。

在一般情況下,用戶會被重定向到/管理,但在這種情況下,我希望他繼續做他的主要行動(註冊賽)......

我使用的是內置的特質進行登錄,所以我查了一下系統做的時候登錄,它已經在使用此功能:

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

旅遊檢查:

  • 使用瀏覽器的檢查元素網絡功能跟蹤重定向 - 可能有幾個,這可能有助於消除混淆。

  • intended()方法在重定向到前者時需要調用guest()。這發生在Authenticate中間件中,但是 (如果您使用其他中間件(例如中間件將管理員捕獲並重定向到管理區域)),則可能首先觸發並重定向,而不使用guest()

  • 您的控制器是否使用AuthenticatesUsers特徵實現authenticated方法?如果是這樣,將返回而不是redirect()->intended()

+0

對於第一點,我會檢查它。對於第二點,你能否告訴我更多,因爲我在這種情況下。對於第三點,是的,你可以在代碼中看到它。 –

+0

我有它正常登錄工作,但對於社交網站登錄,它仍然失敗...... –

+0

第二點,看看'app/Http/Kernel.php'中'$ routeMiddleware'中的每個類,看看是否包含沒有調用'guest()'的重定向。 – tjbp