关于退出登录并清空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值已经清空了),需要再刷新该页面一次,才会弹出 未登录的提示跳转。不知道如何实现即使点后退按钮,直接出现未登录提示?
...全文
9694 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
代码小天王 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"> 试试
加载更多回复(1)

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧