成功登陆后,在Page_Load 里进行Session["ligin"]=="on"验证,点击退出,通过<a href>在本窗口转到退出页,在退出页中,Session.Clear(),但是在没有关闭窗口之前,点击浏览器后退按钮,仍然可以进入登陆后的页面,刷新后,仍然有Session存在。如何彻底清除Session,防止页面后退?并且防止页面缓存?前提是仍在同一个窗口中。

解决方案 »

  1.   

    问题可能是缓存, 在 meta 标签里设一下,把浏览器缓存禁用
      

  2.   

    可以禁止缓存的:
    Response.Buffer = true;
    Response.ExpiresAbsolute = DateTime.Now.Date.AddDays(-1);
    Response.Expires = 0;
    Response.CacheControl = "no-cache";
    Response.Cache.SetCacheability(System.Web.HttpCacheability.NoCache);<META HTTP-EQUIV="Pragma" CONTENT="no-cache">             
    <META HTTP-EQUIV="Cache-Control" CONTENT="no-cache"> 
    <META HTTP-EQUIV="Expires" CONTENT="-1">    或者用这个试试:
      Session.Remove();
      

  3.   

    可以使用HttpModule进行处理,判断每个请求中Session["ligin"].ToString()=="on",否则使页面跳转至登陆页面
      

  4.   

    在退出页面里Session["ligin"]="off" 不管用,我试了,还可以回去,刷新后Session["ligin"]="on"
      

  5.   

    问题找到了,输入密码的页面和登陆后的页面,通过Server.Transfer转的,如果换成Response.Redirect,再配合3楼的代码,则没有上述问题。