2015-07-10 85 views
4

我的問題是我點擊註銷鏈接後可以正常註銷,但如果我點擊返回按鈕的瀏覽器,仍然能夠看到實際上不應該的頁面內容就我的auth中間件進程而言。 ? 我讀我可以防止這種通過禁用緩存,但不認爲這是做這所以最好的方法,我如何能在一個更好的辦法讓這個MY註銷功能是如何在註銷後阻止瀏覽器的後退按鈕登錄

public function logout() 
{ 
    Auth::logout(); 
    Session::flush(); 
    return redirect('login'); 
} 

我的路線爲:

Route::get('logout','[email protected]'); 

thanx提前

+0

實際上,您看到的內容已緩存,嘗試在返回使用後退按鈕後刷新頁面,您將被重定向。 –

+0

是的但是,當點擊後退按鈕時可以看到一些重要的數據,所以我必須防止這種情況。感謝您的建議,但。 – Diksha

+0

我不認爲有一個正確的方法來做到這一點,因爲這是一個客戶端問題。或者這就是我從你的問題中瞭解到的 –

回答

10

這個問題與瀏覽器。瀏覽器緩存頁面內容,並在您點擊後退按鈕時將緩存的內容提供給用戶。

在需要用戶登錄的頁面上設置緩存控制元標記。這樣,您告訴瀏覽器不要緩存它。

如:

<meta http-equiv="cache-control" content="private, max-age=0, no-cache"> 
<meta http-equiv="pragma" content="no-cache"> 
<meta http-equiv="expires" content="0"> 
+0

這個解決方案似乎不起作用,瀏覽器後退按鈕仍然移動到儀表板頁面而不是登錄頁面:( – RJParikh

+0

將這些內容放在響應的標題中適用於我。 – Rimer

0

使用您的網頁上(像一個ping服務),設置緩存假的頂部一個簡單的AJAX請求,並把一些條款中它重定向訪問者登錄,如果沒有通過認證。

所以註銷後,如果您嘗試返回,即使主頁面被瀏覽器緩存,它仍會嘗試在頁面加載時加載AJAX請求。而且由於用戶認證不再有效,它會將用戶重定向回登錄頁面。

0

添加此javascript代碼,它會阻止重定向。

history.pushState(null, null, document.URL); 
window.addEventListener('popstate', function() { 
    history.pushState(null, null, document.URL); 
}); 
相關問題