如果用户点击asp.net中的浏览器后退按钮,如何清除/放弃会话

时间:2014-02-20 11:16:39

标签: c# asp.net .net session session-state

需要在浏览器后退按钮上清除会话(重定向到登录或错误页面),如果用户再次在浏览器中粘贴相同的URL以访问网页或单击浏览器转发按钮,因为会话已过期/放弃所以重定向到登录或错误页面。不应在任何时间从浏览器缓存中显示相同或任何应用程序网页。

技术堆栈:

  • Microsoft.NET
  • Java Script / C#

  • IE7 / 8/9/10

  • Safari浏览器
  • 的Mozilla

2 个答案:

答案 0 :(得分:3)

不幸的是,大多数现代浏览器会在用户单击后退按钮后从缓存重新加载页面。没有请求发送到服务器。

您可以尝试通过html head section中的addind元信息禁用缓存:

<meta http-equiv="cache-control" content="max-age=0" />
<meta http-equiv="cache-control" content="no-cache" />
<meta http-equiv="expires" content="0" />
<meta http-equiv="expires" content="Tue, 01 Jan 1980 1:00:00 GMT" />
<meta http-equiv="pragma" content="no-cache" />

但请记住,它的浏览器决定从缓存中重新加载哪些内容以及再次请求内容请求。

答案 1 :(得分:0)

我认为禁用缓存不是一个好主意。对您来说唯一重要的是用户在点击导航按钮时必须登录并重新开始。您需要有一个注销页面,可以执行注销和清除会话所需的任何操作,然后在用户导航时重定向到该页面。

$(window).bind('beforeunload', function (event) {
   //if(some condition that detects user hasn't clicked a link on your page)
       location.href = "/signout.aspx";
}