关于退出登录并清空Session

lhw7791086 2012-12-04 10:55:48
页面的一些内容根据Session里存的不同值来设置可见性。现有一按钮实现退出登录功能,并跳转至登陆页面,实现如下:

protected void LinkButton2_Click(object sender, EventArgs e)
{
Session.Remove("EmpName");
Session.Remove("EmpID");
Session.Remove("EmpPwd");
this.Response.Redirect("Login.aspx");
}

并且在主页的载入页面代码中判断是否是匿名登录:

protected void Page_Load(object sender, EventArgs e)
{
if(Session["EmpID"]==null)
{
Response.Write("<script>alert('您未登录,即将跳转至登录页面!');window.location.href ='Login.aspx'</script>");
}
}

现在的情况是:点击退出登录,返回了登陆页,并且调试发现Session也都清空了。但是点击浏览器的后退按钮,又会回到之前的页面(但是目前Session值已经清空了),需要再刷新该页面一次,才会弹出 未登录的提示跳转。不知道如何实现即使点后退按钮,直接出现未登录提示?
...全文
8981 21 点赞 打赏 收藏 举报
写回复
21 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
代码小天王 2012-12-07
没有必要每个地方都加 我认为浏览器缓存本身是为减少服务端压力和提高加载速度的。 你应该在需要的地方加,而且不是每个页面 写个父类 继承Page 然后重载Onload,然后需要的页面继承
引用 20 楼 lhw7791086 的回复:
我去终于解决了,百度上找到了方法,分享一下 http://blog.csdn.net/smallfools/article/details/5630404 不过工作量较大,需要给每个页面加代码。。。
  • 打赏
  • 举报
回复
代码小天王 2012-12-04
response.setHeader("Cache-Control", "no-cache"); response.setHeader("Cache-Control", "no-store"); response.setDateHeader("Expires", 0); response.setHeader("Pragma", "no-cache"); 让客户端不缓存,浏览器后退到此页面时,就会重新请求服务端
  • 打赏
  • 举报
回复
llsus 2012-12-04
我也遇到这个问题,这个时候,PageLoad不发生了,所以无法进行验证,我还发帖求助,不过未能解决。
  • 打赏
  • 举报
回复
代码小天王 2012-12-04
浏览器后腿按钮,是打开的客户端缓存的界面,不是重新请求服务器,所以肯定不会提示超时,这个肯定得从客户端入手,你不用考虑服务端的事,重点放客户端吧
  • 打赏
  • 举报
回复
lhw7791086 2012-12-04
引用 11 楼 fengyarongaa 的回复:
时间戳这个名字不懂还是处理方式不懂? 使用时间戳,来判定当前的时间是否是失效网页。 为了防止用户刻意伪造,可以自己用算法给时间戳加密,用自己的加密解密方法进行比对。
额,我是新手,关于时间戳不知道如何使用,百度也没查到相关信息。。。
  • 打赏
  • 举报
回复
ycproc 2012-12-04
时间戳这个名字不懂还是处理方式不懂? 使用时间戳,来判定当前的时间是否是失效网页。 为了防止用户刻意伪造,可以自己用算法给时间戳加密,用自己的加密解密方法进行比对。
  • 打赏
  • 举报
回复
lhw7791086 2012-12-04
引用 6 楼 chen_ya_ping 的回复:
你在客户端加入一个cookie,用户点击退出时,你清理了session,也同时清理这个cookie,然后点击那个回退按钮的那个页面,判断一下cookie,这样就可以了
Session和Cookies原理不是差不多么。。。不过我对Cookies不懂,求指教。
  • 打赏
  • 举报
回复
lhw7791086 2012-12-04
引用 8 楼 fengyarongaa 的回复:
加上时间戳,如果时间回退的网页时间小于当前时间,那就说明网页过期。 结合着Session和cookie进行判断。
时间戳?不懂,可否用代码说明下?谢谢。
  • 打赏
  • 举报
回复
ycproc 2012-12-04
加上时间戳,如果时间回退的网页时间小于当前时间,那就说明网页过期。 结合着Session和cookie进行判断。
  • 打赏
  • 举报
回复
lhw7791086 2012-12-04
引用 5 楼 hjywyj 的回复:
http://blog.csdn.net/deepwishly/article/details/7347451
可作为参考,不过不是根本上解决问题。还是谢谢了!
  • 打赏
  • 举报
回复
chen_ya_ping 2012-12-04
你在客户端加入一个cookie,用户点击退出时,你清理了session,也同时清理这个cookie,然后点击那个回退按钮的那个页面,判断一下cookie,这样就可以了
  • 打赏
  • 举报
回复
lhw7791086 2012-12-04
引用 2 楼 kongwei521 的回复:
加上ispostback pageload里面
加了,也不行。。。
  • 打赏
  • 举报
回复
lhw7791086 2012-12-04
引用 1 楼 hjywyj 的回复:
Response.Write("<script>alert('您未登录,即将跳转至登录页面!');window.location.replace('Login.aspx')</script>");
试过了,还是不行。点击后退,有直接回去了,无任何提示。。。
  • 打赏
  • 举报
回复
蝶恋花雨 2012-12-04
加上ispostback pageload里面
  • 打赏
  • 举报
回复
Response.Write("<script>alert('您未登录,即将跳转至登录页面!');window.location.replace('Login.aspx')</script>");
  • 打赏
  • 举报
回复
lhw7791086 2012-12-04
我去终于解决了,百度上找到了方法,分享一下 http://blog.csdn.net/smallfools/article/details/5630404 不过工作量较大,需要给每个页面加代码。。。
  • 打赏
  • 举报
回复
大腹 2012-12-04
请参考http://sjolzy.cn/Disable-the-browser-s-back-button.html
  • 打赏
  • 举报
回复
lhw7791086 2012-12-04
引用 17 楼 ckhker 的回复:
你那个后退是浏览器缓存文件吧? META 加个 <META HTTP-EQUIV="pragma" CONTENT="no-cache"> <META HTTP-EQUIV="Cache-Control" CONTENT="no-store, must-revalidate"> <META HTTP-EQUIV="expires" CONTENT="Wed, 26……
试过了,还是没有用额。点击后退按钮后依然回到了原来的页面,需要再点击一次刷新后才弹出提示框。。。
  • 打赏
  • 举报
回复
寒叶gg 2012-12-04
你那个后退是浏览器缓存文件吧? META 加个 <META HTTP-EQUIV="pragma" CONTENT="no-cache"> <META HTTP-EQUIV="Cache-Control" CONTENT="no-store, must-revalidate"> <META HTTP-EQUIV="expires" CONTENT="Wed, 26 Feb 1997 08:21:57 GMT"> <META HTTP-EQUIV="expires" CONTENT="0"> 试试
  • 打赏
  • 举报
回复
加载更多回复
相关推荐
发帖
.NET社区
加入

5.9w+

社区成员

.NET技术交流专区
申请成为版主
帖子事件
创建了帖子
2012-12-04 10:55
社区公告
暂无公告