none
关于退出登录并清空Session RRS feed

  • 问题

  • 页面的一些内容根据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值已经清空了),需要再刷新该页面一次,才会弹出 未登录的提示跳转。不知道如何实现即使点后退按钮,直接出现未登录提示?

    2012年12月4日 7:51

答案

  • 浏览器后退是没有办法检测Session的,Session是服务器端存放的一些用户数据,前进后退是客户端浏览器的操作,点击后退是不会产生服务器端请求的,所以就不会有什么变化。

    一般情况下没人会这么无聊,点了退出,再点后退的。即使是后退看到了应该登录以后才能看到的东西,他也曾经是个合法用户啊,看就看吧,对安全性没什么大影响。

    非要做检测的话,给button2加个OnClientClick事件,给地址栏上加个锚点,比如, xxx.aspx#logout,前台js判断是否有锚点,有锚点的话,window.location='login.aspx'跳转登录。但是一旦禁用js,也是无效了这种方法。


    Willin.org

    2012年12月5日 0:47

全部回复

  • Session.Abadon()方法试试看。

    或者干脆:

    Session["EmpID"]=null;


    我的博客园
    慈善点击,点击此处
    和谐拯救危机,全集下载,净化人心


    2012年12月4日 7:57
  • Session值是可以清空的,但是我主要问的是:即使退出登录返回到了登陆页面,并且Session也清空了。但是这时只要点击浏览器的后退按钮,仍然返回到了之前的页面(按理说点击后退按钮后应该出现强制跳转提示),需要手动刷新一次网页才出现提示。这个问题如何解决?
    2012年12月4日 8:03
  • 谢谢回答,不过你理解错了我想问的东西了。。。

    2012年12月4日 8:04
  • 浏览器后退是没有办法检测Session的,Session是服务器端存放的一些用户数据,前进后退是客户端浏览器的操作,点击后退是不会产生服务器端请求的,所以就不会有什么变化。

    一般情况下没人会这么无聊,点了退出,再点后退的。即使是后退看到了应该登录以后才能看到的东西,他也曾经是个合法用户啊,看就看吧,对安全性没什么大影响。

    非要做检测的话,给button2加个OnClientClick事件,给地址栏上加个锚点,比如, xxx.aspx#logout,前台js判断是否有锚点,有锚点的话,window.location='login.aspx'跳转登录。但是一旦禁用js,也是无效了这种方法。


    Willin.org

    2012年12月5日 0:47