2015-09-15 91 views
0

我必須創建,,登錄才能評論「按鈕,點擊此按鈕應該將用戶重定向到登錄頁面,成功登錄後,他應該被重定向到頁面,在那裏他點擊了那個按鈕。試圖使假冒網址與它周圍的權威性中間件這樣的:Laravel。登錄後評論

Route::group(['middleware' => 'auth'], function() { 
    Route::get('/log-in-to-comment', '[email protected]'); 
}); 

我定義我的getLogInToComment功能是這樣的:

public function getLogInToComment() { 
     return redirect()->back(); 
} 

但它重定向我/log-in-to-comment這已經是過濾器,所以我得到太多的重定向。我也試過return Redirect::to(URL::previous());但它也不起作用。據我所知,post方法不應該用於重定向,那麼我該如何處理這個簡單的任務?提前致謝!

回答

1

由於Laravel總是重定向回你來自的頁面(這是你的情況/登錄到評論),你必須覆蓋此URL。

一種可能的方式是獲取最後一個網站的URL並將其保存到瀏覽器會話中。爲此,請確保getLogInToComment-route不使用auth或guest中間件,因爲它應該作爲來賓和登錄用戶進行處理。然後,如果用戶沒有登錄,則存儲以前的站點,如果他是,則重定向回它。

public function getLogInToComment() { 
    if (!Auth::user()) { 
     // User is not logged in. Save previous URL and redirect to login 
     Session::put('prev', URL::previous()); 
     return Redirect::route('login'); 
    } else { 
     // User is now logged in and returned to this route again. Redirect to site 
     return Redirect::to(Session::get('prev')); 
    } 
} 
+0

我做了真正的simillar。我寫了必要的URL到會話'Session :: put('base_url',\ Request :: url());'和in我的'getLogInToComment'函數我這樣做:'$ url = Session :: get('base_url'); \t \t return redirect($ url);'。 –

0

通過讓['middleware' => 'auth'],你已迫使用戶已經登錄去看log-in-to-comment頁面。

我還會注意到,您不需要路徑路徑中的領先/

嘗試:

Route::group(['middleware' => 'guest'], function() { 
    Route::get('log-in-to-comment', '[email protected]'); 
}); 
+0

用戶可以看到「登錄評論」按鈕,它將用戶重定向到登錄註釋url,後來給我一個錯誤,我希望他重定向到頁面,在那裏他點擊按鈕,這是我的問題 –

+0

是的,我的觀點是如果用戶沒有登錄,'['middleware'=>'auth']'會拋出一個錯誤。你需要將它改爲'['middleware'= >'guest']'如果用戶沒有登錄 – samlev