我正在尝试使用清除“注销”链接中的会话Session.Abandon();
。注销后我重定向回登录页面。但即使在注销后我也可以使用浏览器的后退按钮访问以前的页面。我该如何解决?
问问题
3631 次
4 回答
1
根据您的评论,您的会话已被放弃。
您看到的是浏览器保存在缓存中的页面“快照”。只要在您的代码中确保在允许用户在您的页面上执行任何任务之前您有一个有效的会话,您应该没问题。
关于如何尝试和禁用缓存有各种答案,因此按下后退按钮不会显示上一页 - 但就您的问题而言 - 您已经注销并且您的会话消失了......
于 2012-10-24T09:43:23.620 回答
0
尝试将其放在您的代码隐藏中:
Page.Response.Cache.SetCacheability(HttpCacheability.NoCache)
于 2012-10-24T09:22:44.817 回答
0
您需要为该页面禁用浏览器上的所有类型的缓存:
Response.Cache.SetExpires(DateTime.UtcNow.AddYears(-4));
Response.Cache.SetValidUntilExpires(false);
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches);
Response.Cache.SetNoStore();
Response.ExpiresAbsolute = DateTime.Now.Subtract(new TimeSpan(1, 0, 0, 0));
Response.Expires = 0;
Response.CacheControl = "no-cache";
Response.AppendHeader("Pragma", "no-cache");
Response.Cache.AppendCacheExtension("must-revalidate, proxy-revalidate, post-check=0, pre-check=0");
于 2012-10-24T09:37:45.407 回答
0
试试这个代码:
// Code disables caching by browser. Hence the back browser button
// grayed out and could not causes the Page_Load event to fire
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetExpires(DateTime.UtcNow.AddHours(-1));
Response.Cache.SetNoStore();
如果你想把它放在那里,你可以在 aspx 表单中添加类似的东西:
<META Http-Equiv="Cache-Control" Content="no-cache">
<META Http-Equiv="Pragma" Content="no-cache">
<META Http-Equiv="Expires" Content="0">
或者可以在注销事件中设置它:
protected void LogOut()
{
Session.Abandon();
string nextpage = "Logoutt.aspx";
Response.Write("<script language="javascript">");
Response.Write("{");
Response.Write(" var Backlen=history.length;");
Response.Write(" history.go(-Backlen);");
Response.Write(" window.location.href='" + nextpage + "'; ");
Response.Write("}");
Response.Write("</script>");
}
参考见: http: //www.codeproject.com/Tips/135121/Browser-back-button-issue-after-logout
于 2012-10-24T09:33:58.113 回答