【问题标题】:How to clear / abandon Session if user clicks on browser Back button in asp.net如果用户单击asp.net中的浏览器后退按钮,如何清除/放弃会话
【发布时间】:2014-03-21 07:05:23
【问题描述】:
需要清除浏览器后退按钮上的会话(重定向到登录或错误页面),如果用户再次在浏览器中粘贴相同的 URL 以访问网页或单击浏览器前进按钮,因为会话已过期/放弃所以重定向到登录或错误页面。任何时候都不应从浏览器缓存中显示相同或任何应用程序网页。
技术栈:
- Microsoft.NET
Java 脚本/C#
IE7/8/9/10
- 铬
- 野生动物园
- Mozilla
【问题讨论】:
标签:
c#
asp.net
.net
session
session-state
【解决方案1】:
我不认为禁用缓存是个好主意。对您来说唯一重要的是用户必须在点击导航按钮时登录并重新开始。您需要有一个退出页面,该页面可以执行您需要执行的任何操作来退出并清除会话,然后在用户离开时重定向到该页面。
$(window).bind('beforeunload', function (event) {
//if(some condition that detects user hasn't clicked a link on your page)
location.href = "/signout.aspx";
}
【解决方案2】:
不幸的是,大多数现代浏览器会在用户单击返回按钮后从缓存中重新加载页面。没有请求发送到服务器。
您可以尝试通过在 html head 部分添加元信息来禁用缓存:
<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" />
但请记住,决定从缓存中重新加载什么内容以及再次请求什么内容的浏览器。