我在用户登录时保留一个Session变量。 因此,当用户点击btnLogout时,它必须清除我的所有会话并将用户注销为GOOD !!!
它确实清除了我的会话但是如果我在我退出后立即点击IE中的BACK按钮,那么我仍然登录!这意味着它会返回用户仍然登录的屏幕。
我的注销代码
protected void btnLogout_Click
{
Session.Clear();
Session.Abandon();
Session.RemoveAll();
Response.Redirect("Home.aspx");
}
为什么会这样,我该如何防止这种情况?
修改 我可以做的代码中是否有一个选项可以禁止用户按下Web浏览器中的BACK按钮?
答案 0 :(得分:4)
你可以把它放在你主人的Page_Init中:
Response.Cache.SetNoServerCaching();
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetNoStore();
Response.Cache.SetExpires(new DateTime(1900, 01, 01, 00, 00, 00, 00));
这就是大多数银行网站所做的事情,因此您无法有效使用后退按钮。
答案 1 :(得分:3)
这真的是一个问题吗?是的,他们可以在缓存时看到他们的上一页,但是一旦他们尝试在此上下文中发出任何其他合法请求,这些将在会话变量消失时失败。
除非你有一些非常具体的编码原因,否则你将解决一个并不存在的问题。
答案 2 :(得分:2)
通过使用页面上的以下内容,您可以通过多种方式告诉浏览器不要通过代码隐藏,javascript或HTML来缓存页面
<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">
在代码隐藏代码中添加一些代码中的page_load事件也是一种很好的做法,以确保会话变量仍然存在。
答案 3 :(得分:1)
浏览器维护页面的缓存,因此只需回击就不会向服务器发出请求以查看您是否仍然登录。您必须使用HTTPS来确保缓存也受到保护。