2016-04-18 112 views
1

我在我的laravel 5.2應用程序中使用我的路由工作非常困難。laravel 5.2登錄後重定向到預期的網址

預期的行爲是:

  1. 未註冊用戶改掉訪問受保護的頁面
  2. 重定向到登錄
  3. 重定向(成功)到擬頁

當然用戶應如果沒有預期的頁面(當他激活登錄時)被重定向到他的「儀表板」

例子:

/* Create a Payment | Only for registered Users (client) */ 
Route::post('payment', '[email protected]')->middleware('client'); 

用戶會被重定向到登錄頁面,但登錄後,他將被重定向到我在authcontroller定義爲$ redirectTo

protected $redirectTo = '/backoffice'; 

的頁面是否有一種方法來重定向設置類似(inteded 默認)

+0

您是否嘗試過'返回重定向() - >意向('backoffice');'按照這個? https://laravel.com/docs/5。2 /身份驗證#身份驗證用戶 –

+0

我忘了說我想使用laravel的默認身份驗證 –

回答

1

如果您希望未登錄的用戶重定向到登錄頁面,並且成功登錄後返回到目標URL或變量中設置的默認值。

protected $redirectTo = '/backoffice'; 

那麼可能你會用這樣的東西。

return redirect()->guest('login'); 

Laravel將保留會話中的「intended.url」,並且成功登錄後將用戶重定向到/ backoffice。

這裏是另一個答案about various Laravel versions

+0

我必須得出結論,您無法使用保留髮布數據的方式重定向到路由。之後它將永遠成爲獲取請求。 –

+1

如果我知道它是正確的,那麼'withInput()'可以在這種情況下提供幫助。 [Laravel舊輸入](https://laravel.com/docs/5.2/requests#old-input) – scorer

1

我發現,在AuthenticatesUsers.php定義AuthenticatesUsers Trait具有功能handleUserWasAuthenticated其中i t檢查Laravel默認認證AuthController.php是否定義了方法authenticated。如果未定義此方法,則用戶始終會重定向到您在$redirectTo屬性中定義的任何內容。它不會將用戶重定向到預期的URL。然而,在AuthController.php如果你定義的方法如下:按預期準確,用戶通過身份驗證後,他將被重定向到目的URL

protected function authenticated (Request $request, $user){ 
    //add ur custom actions after the user is authenticated 
} 

redirect()->intended()會工作。

+1

這也將在註冊後調用嗎?如上所述,作爲評論,實際的問題是,laravel將不允許保留髮布數據並重定向到預期的POST路由/請求。這將成爲獲取請求。另外,由於laravel在登錄後殺死當前會話,因此我無法在會話中存儲數據以重新生成數據。 –

0

我使用Laravel 5.4

的LoginController:

public function __construct() 
    { 
     session(['url.intended' => url()->previous()]); 
     $this->redirectTo = session()->get('url.intended'); 

     $this->middleware('guest')->except('logout'); 
    } 
0

在5.2 「應用程序/ HTTP /控制器只更改/認證/ AuthController.php 「 near line no 31 protected $ redirectTo ='/ Your_View_page';

相關問題