首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

关于退出登录并清空Session解决思路

2012-12-15 
关于退出登录并清空Session页面的一些内容根据Session里存的不同值来设置可见性。现有一按钮实现退出登录功

关于退出登录并清空Session
页面的一些内容根据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值已经清空了),需要再刷新该页面一次,才会弹出 未登录的提示跳转。不知道如何实现即使点后退按钮,直接出现未登录提示?
[最优解释]
 response.setHeader("Cache-Control", "no-cache");

       

        response.setHeader("Cache-Control", "no-store");

       

        response.setDateHeader("Expires", 0);

       

        response.setHeader("Pragma", "no-cache");

让客户端不缓存,浏览器后退到此页面时,就会重新请求服务端
[其他解释]
你那个后退是浏览器缓存文件吧?
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">

试试
[其他解释]
 Response.Write("<script>alert('您未登录,即将跳转至登录页面!');window.location.replace('Login.aspx')</script>");
[其他解释]
加上ispostback pageload里面
[其他解释]

引用:
Response.Write("<script>alert('您未登录,即将跳转至登录页面!');window.location.replace('Login.aspx')</script>");


试过了,还是不行。点击后退,有直接回去了,无任何提示。。。
[其他解释]
引用:
加上ispostback pageload里面


加了,也不行。。。
[其他解释]
http://blog.csdn.net/deepwishly/article/details/7347451
[其他解释]
你在客户端加入一个cookie,用户点击退出时,你清理了session,也同时清理这个cookie,然后点击那个回退按钮的那个页面,判断一下cookie,这样就可以了
[其他解释]
引用:
http://blog.csdn.net/deepwishly/article/details/7347451


可作为参考,不过不是根本上解决问题。还是谢谢了!
------其他解决方案--------------------




加上时间戳,如果时间回退的网页时间小于当前时间,那就说明网页过期。
结合着Session和cookie进行判断。
[其他解释]

引用:
加上时间戳,如果时间回退的网页时间小于当前时间,那就说明网页过期。
结合着Session和cookie进行判断。


时间戳?不懂,可否用代码说明下?谢谢。
[其他解释]
引用:
你在客户端加入一个cookie,用户点击退出时,你清理了session,也同时清理这个cookie,然后点击那个回退按钮的那个页面,判断一下cookie,这样就可以了


Session和Cookies原理不是差不多么。。。不过我对Cookies不懂,求指教。
[其他解释]

时间戳这个名字不懂还是处理方式不懂?
使用时间戳,来判定当前的时间是否是失效网页。
为了防止用户刻意伪造,可以自己用算法给时间戳加密,用自己的加密解密方法进行比对。
[其他解释]
引用:
时间戳这个名字不懂还是处理方式不懂?
使用时间戳,来判定当前的时间是否是失效网页。
为了防止用户刻意伪造,可以自己用算法给时间戳加密,用自己的加密解密方法进行比对。


额,我是新手,关于时间戳不知道如何使用,百度也没查到相关信息。。。
[其他解释]
浏览器后腿按钮,是打开的客户端缓存的界面,不是重新请求服务器,所以肯定不会提示超时,这个肯定得从客户端入手,你不用考虑服务端的事,重点放客户端吧
[其他解释]
我也遇到这个问题,这个时候,PageLoad不发生了,所以无法进行验证,我还发帖求助,不过未能解决。
[其他解释]
引用:
response.setHeader("Cache-Control", "no-cache");

       

        response.setHeader("Cache-Control", "no-store");

       

        response.setDateHeader("Expires", 0);

   ……


新手勿喷,请问这几句代码加在哪里啊。。。。
[其他解释]
引用:
你那个后退是浏览器缓存文件吧?
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……


试过了,还是没有用额。点击后退按钮后依然回到了原来的页面,需要再点击一次刷新后才弹出提示框。。。
[其他解释]
我去终于解决了,百度上找到了方法,分享一下
http://blog.csdn.net/smallfools/article/details/5630404

不过工作量较大,需要给每个页面加代码。。。
[其他解释]
请参考http://sjolzy.cn/Disable-the-browser-s-back-button.html
[其他解释]
没有必要每个地方都加

我认为浏览器缓存本身是为减少服务端压力和提高加载速度的。

你应该在需要的地方加,而且不是每个页面

写个父类 继承Page 然后重载Onload,然后需要的页面继承
引用:
我去终于解决了,百度上找到了方法,分享一下
http://blog.csdn.net/smallfools/article/details/5630404

不过工作量较大,需要给每个页面加代码。。。

热点排行