2016-07-05 74 views
0

我有一個在線報紙的典型場景,你有文章和下面的表單來發表評論,但是你需要登錄才能發表評論。所以點擊它會將您帶到日誌頁面,並且在您通過身份驗證後應該返回到該頁面。如何在這種情況下返回到預定頁面

因此,由於表單是用戶在未登錄的情況下可以看到的頁面的一部分,因此我無法爲由PostController創建的頁面(獲取路徑)編寫中間件。

CommentController只有一個方法,它是Form的存儲區。所以,當然,如果我爲該控制器放置了一箇中間件,它會失敗,因爲儘管它確實會將您帶到登錄頁面上,點擊提交按鈕後,保存的預期URL將是表單的Post,所以在返回後進行身份驗證,它會將您帶到該表單的郵政路由名稱下的不存在的URL頁面。

我看了一下驗證::警衛等,但是不能隨之而來明確,

Laravel 5 - After login redirect back to previous page

要求完全一樣的問題,我這樣做,這是同樣的情況,但我沒有看到他的答案是如何工作的,因爲在Auth控制器中定義了一個受保護的變量(並且我已經有了),像受保護的$ redirectTo,它只告訴認證後去哪裏,而且它只是一條固定路線,在我的情況下,它需要你到儀表板。但我不想被帶到儀表板,它必須返回到文章和評論表單所在的頁面。

回答

-1

這已經有一段時間了,因爲我已經這樣做了,但這應該可以正常工作。 您可以在從評論部分到登錄頁面的鏈接中添加GET參數。

http://....com/login?intended=http://yourredirectlink.com/#form

把目的URL在會話變量url.intended,並登錄後,您重定向像這樣

Redirect::intended('/'); 

這回重定向到的URL「/」如果會話變量不可用。

0

我在Laracasts找到了解決方案。我必須說我真的不明白它,但它的工作原理。它增加了兩個功能給AuthController。

https://laracasts.com/discuss/channels/laravel/redirect-to-page-where-login-button-was-clicked

public function showLoginForm() 
     { 
      if(!session()->has('from')){ 
       session()->put('from', url()->previous()); 
      } 
      return view('auth.login'); 
     } 

     public function authenticated($request,$user) 
     { 
      return redirect(session()->pull('from',$this->redirectTo)); 
     }