这是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