我的用户登入是用session保存的,当我退出时做了session清空操作FormsAuthentication.SignOut();
                Session.Clear();
                Session.Abandon();
                Response.Clear();
                //清空缓存 
                Response.Buffer = true;
                Response.ExpiresAbsolute = System.DateTime.Now.AddDays(-1);
                Response.Expires = 0;
                Response.CacheControl = "no-cache";
                Response.AddHeader("pragma", "no=cache");
例子:
http://localhost:4118/Myhmo/AdminHMO/Login.aspx
问题:当我退出后,直接输入文件地址
http://localhost:4118/Myhmo/AdminHMO/SuccessStory/SuccessStory.aspx
确能够进去。
后来我调试,发现问题所在,session值是已经清空(session值确定已经清空)直接输入文件地址能进去。(因为没有删除游览器历史记录)
点工具--》删除游览器历史记录就可以了。
但是为什么删除游览器历史记录才就可以起到判断作用?如何在清空缓存的时候用程序清空游览器历史记录
我的判断代码if (!IsPostBack)
        {
            if (Session["user"] == null)
            {
                Response.Redirect("../index.aspx");
            }
请问怎么解决?如何处理

解决方案 »

  1.   

    SuccessStory 页面pageload内 ispostback外 添加这段代码:
     if (Session["user"] == null)
                {
                    Response.Redirect("../index.aspx");
                }最好将判断session是否为空的操作写在基类中
    让所有页面都继承这个基类
    在页面加载时判断
      

  2.   

    我是在模板页做了这个判断  protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
    if (Session["user"] == null)
      {
      Response.Redirect("../index.aspx");
      }
    要放到ispostback外面?
      

  3.   


    引用 3 楼 q107770540 的回复:
    SuccessStory 页面pageload内 ispostback外 添加这段代码:
    if (Session["user"] == null)
    {
    Response.Redirect("../index.aspx");
    }最好将判断session是否为空的操作写在基类中
    让所有页面都继承这个基类
    在页面加载时判断
    我现在在模板页ispostback里外都加,还是不行protected void Page_Load(object sender, EventArgs e)
        {
    if (Session["user"] == null)
      {
      Response.Redirect("../index.aspx");
      }
            if (!IsPostBack)
            {
    if (Session["user"] == null)
      {
      Response.Redirect("../index.aspx");
      }
      

  4.   

    在母版页的page_load中添加 这句代码:
    Response.Expires   =   -1;
    http://hi.baidu.com/zbphot/blog/item/98c4422cee7eeb3f349bf79b.html
      

  5.   


    我加了这个 
    Response.Expires = 0;
    没有用
      

  6.   

    在母版页的page_load中添加 这句代码:
    Response.Expires = -1;
    http://hi.baidu.com/zbphot/blog/item/98c4422cee7eeb3f349bf79b.html
      

  7.   

    我的方法也许很笨,不过我的可以的,首先每个页面前台加上<meta content="no-cache" />
        <meta http-equiv="Cache-Control" content="no-cache" />
        <meta http-equiv="Expires" content="0" />然后后台代码再加上protected void Page_Load(object sender, EventArgs e)
        {
            Response.Cache.SetCacheability(HttpCacheability.NoCache);
            Response.Expires = 0;
            Response.Buffer = true;
            Response.ExpiresAbsolute = DateTime.Now.AddSeconds(-1);
            Response.AddHeader("pragma", "no-cache");
            Response.CacheControl = "no-cache";
            if (!IsPostBack)
            {
                if (Session["role"] == null || Session["role"].ToString() == "")
                {
                    Response.Redirect("Login.aspx");
                }
            }
        },点击退出时,我转到处理一个页面,然后该页面写上if (!IsPostBack)
            {
                if (Session["role"] == null || Session["role"].ToString() == "")
                {
                    Response.Redirect("Login.aspx");
                }
                Session.Remove("role");
                Page.RegisterStartupScript("", "<script>location.href='首页';</script>");
            }希望能帮到你!O(∩_∩)O~