這是Google中一個非常有名的問題。我發現了幾個建議來實現這個功能。我已經實施的程序描述如下:註銷後防止頁面回顧
我在主頁上添加了一個註銷鏈接,並單擊該鏈接我將用戶重定向到註銷頁面。
protected void LinkButton1_Click(object sender, EventArgs e) {
Response.Redirect("../Logout.aspx");
}
現在在Logout.aspx我已經加入:
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetExpires(DateTime.Now.AddSeconds(-1));
Response.Cache.SetNoStore();
Response.AppendHeader("Pragma", "no-cache");
在Page_Load方法的代碼
後面。
此外,我已經添加了asp:ScriptManager
和asp:Timer
到Logout.aspx
:
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:Timer ID="Timer1" runat="server" Interval="1000" ontick="Timer1_Tick" >
</asp:Timer>
的Timer1_Tick方法是:
protected void Timer1_Tick(object sender, EventArgs e) {
FormsAuthentication.SignOut();
Session.Abandon();
FormsAuthentication.RedirectToLoginPage();
}
這是從Logout.aspx
重定向到Login.aspx
。此外,我已經添加下面的JavaScript方法在Logout.aspx
:
function disableBackButton() {
window.history.forward(1);
}
disableBackButton();
window.onload = disableBackButton();
window.onpageshow = function (evt) { if (evt.persisted) disableBackButton() }
window.onunload = function() { void (0) }
而且它的工作,只有當我單單擊後退按鈕,或者點擊多次與暫停。但是,如果連續點擊多次,那麼我將再次進入主頁。
我該如何解決這個問題?
非常感謝。這是一個有用的方法,我將使用它。但是這並不能解決我的問題。有什麼辦法可以徹底清除緩存或禁用它。 – 2012-04-01 16:40:23
它已經解決了。我爲主頁設置了no-cache(在Logout.aspx的Page_Load中使用了類似的過程)。也許我需要爲母版頁的Page_Load設置no-cache選項,因爲它是由主頁繼承的。我對嗎? – 2012-04-01 16:44:30