2012-05-21 73 views
0

我正在使用Jsp-servlet。我有3個jsp pages.one登錄,成功登錄後,它會顯示員工他的記錄,然後註銷。所以我的問題是註銷後,當我按回來按鈕它將顯示僱員的記錄,所以我禁用後退按鈕,並清除緩存並將其重定向到登錄頁面jsp中的後退按鈕重定向到登錄頁面,無需註銷

但現在的問題是,當用戶成功登錄後,在他的記錄頁面上,並且如果他按回登錄按鈕,登錄頁面將顯示而沒有按下注銷。什麼是這個解決方案?

回答

1

您可以禁用後退按鈕,但不應該這樣做,而應該告訴瀏覽器不要緩存登出後從緩存中加載的頁面。 Servlet過濾器將最適合用於前處理。你可以做這樣的事情在你的過濾器的要求:

response.setHeader("Cache-Control","no-cache"); 

我覺得你的情況,你可能已經被清理過的cookie,這將作廢了會議,並會在您執行時將您重定向到登錄頁面。如果你能提供代碼會更好。

0

當我們按回按鈕會話不失效。這不是因爲緩存(嘗試在顯示Employee儀表板的頁面中打印日期。每次我們按下新的請求時都會向服務器發送按鈕)。

我加了: response.setHeader(「Cache-Control」,「private,no-store,no-cache,must-revalidate」); response.setHeader(「Pragma」,「no-cache」); response.setDateHeader(「Expires」,0); 但它沒有鍛鍊。

因此,您可能需要添加一個java腳本來禁用您的後退按鈕(客戶端可能會禁用js,因此不是解決方案),或者另一種解決方案是在您的第一個jsp中添加一個條件,即僅在會話中的用戶名(或您正在使用的任何屬性)爲空。

如果您按下後退按鈕,即如果會話未失效,則用戶名仍然存在,您只能顯示已登錄的用戶並在其中提供註銷按鈕。

或者您可以在LoginPage jsp for sessionAttribute not null invalidate session中檢查會話參數。

-1
<script> 

$(document).ready(function() { 
    function disableBack() { window.history.forward() } 

    window.onload = disableBack(); 
    window.onpageshow = function(evt) { if (evt.persisted) disableBack() } 
}); 
</script> 

我們只能在該jsp頁面上使用java腳本禁用後退鍵。

+0

這不是一個合適的解決方案... – bitoiu

+0

然後爲了正確的解決方案,你必須使用會話來驗證它。 –

相關問題