使用asp.net中的会话注销

时间:2012-10-24 09:19:42

标签: asp.net

我正在尝试使用Session.Abandon();清除“退出”链接中的会话。注销后我重定向回登录页面。但即使在注销后我也可以使用浏览器的后退按钮访问之前的页面。我该如何解决?

4 个答案:

答案 0 :(得分:1)

根据您的评论,您的会话已被放弃。

您所看到的是浏览器保存在缓存中的页面的“快照”。 只要你的代码背后确保你有一个有效的会话,然后允许用户在你的页面上执行任何任务,你应该没事。

关于如何尝试和禁用缓存有各种答案,因此按下后退按钮不会显示上一页 - 但就您的问题而言 - 您已经注销并且您的会话已经消失。 ..

答案 1 :(得分:0)

尝试将其放在代码隐藏中:

Page.Response.Cache.SetCacheability(HttpCacheability.NoCache)

答案 2 :(得分: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">

OR 可以在注销事件中设置此项:

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

答案 3 :(得分: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");