我在用户登录时保留一个Session变量。 因此,当用户点击btnLogout时,它必须清除我的所有会话并将用户注销为GOOD !!!

它确实清除了我的会话但是如果我在我退出后立即点击IE中的BACK按钮,那么我仍然登录!这意味着它会返回用户仍然登录的屏幕。

我的注销代码

protected void btnLogout_Click
{
   Session.Clear();
   Session.Abandon();
   Session.RemoveAll();

   Response.Redirect("Home.aspx");
}

为什么会这样,我该如何防止这种情况?

修改 我可以做的代码中是否有一个选项可以禁止用户按下Web浏览器中的BACK按钮?

有帮助吗?

解决方案

你可以把它放在你主人的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));

这就是大多数银行网站所做的事情,因此您无法有效使用后退按钮。

其他提示

这真的是一个问题吗?是的,他们可以在缓存时看到他们的上一页,但是一旦他们尝试在此上下文中发出任何其他合法请求,这些将在会话变量消失时失败。

除非你有一些非常具体的编码原因,否则你将解决一个并不存在的问题。

通过使用页面上的以下内容,您可以通过多种方式告诉浏览器不要通过代码隐藏,javascript或HTML来缓存页面

<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">

在代码隐藏代码中添加一些代码中的page_load事件也是一种很好的做法,以确保会话变量仍然存在。

浏览器维护页面的缓存,因此只需回击就不会向服务器发出请求以查看您是否仍然登录。您必须使用HTTPS来确保缓存也受到保护。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top