首页 > 解决方案 > 登录会话没有被取消

问题描述

我有一个登录页面,在此页面中,成功验证用户身份时分配了一个登录会话,并且该会话正在整个项目的所有页面中使用。在所有页面中,我都提出了一个条件

If(Session["login"]) == null)
    Response.Redirect("login.aspx");

此外,我还在注销时取消会话。但是,此代码不起作用。单击返回按钮后,应用程序将再次登录。

请任何人都可以帮助我。

标签: asp.net

解决方案


在每个页面的页面加载时添加这个。

protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            if (Session["login"] == null)
                Response.Redirect("Login.aspx");
            else
            {
                Response.ClearHeaders();
                Response.AddHeader("Cache-Control", "no-cache, no-store, max-age=0, must-revalidate");
                Response.AddHeader("Pragma", "no-cache");
            }
        }
    }

有关更多详细信息,请访问链接在 ASP.Net 中注销时禁用浏览器的后退按钮功能

在注销按钮上单击添加此

protected void btnLogout_Click(object sender, EventArgs e)
    {
        Session.Abandon();
        Session["login"] = null;
        Response.Cache.SetCacheability(HttpCacheability.NoCache);
        Response.Buffer = true;
        Response.ExpiresAbsolute = DateTime.Now.AddDays(-1d);
        Response.Expires = -1000;
        Response.CacheControl = "no-cache";
        Response.Redirect("Login.aspx", true);
    }

推荐阅读