C# ASP.NET阻止在注销前后访问主页

C# ASP.NET阻止在注销前后访问主页,c#,asp.net,session,login,session-cookies,C#,Asp.net,Session,Login,Session Cookies,我有一个登录页面和一个主页。不登录就无法访问主页,但在我登录并单击主页上的“注销”之后。用户可以从浏览器的地址行访问主页。如何预防这种情况?这是我的实现 AdminPanelLogin.aspx.cs上的登录单击方法: protected void adminLoginButton_Click(object sender, EventArgs e) { String adminName = adminNameText.Text; String passwo

我有一个登录页面和一个主页。不登录就无法访问主页,但在我登录并单击主页上的“注销”之后。用户可以从浏览器的地址行访问主页。如何预防这种情况?这是我的实现

AdminPanelLogin.aspx.cs上的登录单击方法:

protected void adminLoginButton_Click(object sender, EventArgs e)
    {
        String adminName = adminNameText.Text;
        String password = adminPwdText.Text;

        AdminPanelLoginProcess aplp = new AdminPanelLoginProcess();

        if (aplp.adminLogin(adminName, password))
        {
            Session["AdminAuthentication"] = aplp.Admn.AdminID;
            Response.Redirect("AdminPanel.aspx");
        }
        else
        {
            Response.Write("<script>alert('Login failed !');</script>");
        }
    }
AdminPanel.aspx.cs页面加载方法:

 protected void Page_Load(object sender, EventArgs e)
    {
        if (Session["AdminAuthentication"] == null)
        {
            Response.Redirect("AdminPanelLogin.aspx");
        }
        else 
        {
            if (!IsPostBack)
            {
                showProducts();
                showModels();
                showShoes();
            }
            else 
            {
                if (Session["AdminAuthentication"] == null)
                {
                    Response.Redirect("AdminPanelLogin.aspx");
                }
            }
        }
    }

默认情况下,“上一步”按钮不会重新加载页面,而是从缓存中获取页面。尝试将AdminPanel.aspx中的缓存禁用为

Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetExpires(DateTime.Now);

或者使用

中的任何其他方法,是否需要阻止“用户可以从浏览器的地址行访问主页”?本例中的主页是什么?是AdminPanel.aspx吗?您使用的是什么身份验证模式?代码看起来不错,应该可以正常工作。您是否可以确认:您的用户无需输入登录名和密码即可访问AdminPanel.aspx?这些用户是授权用户(拥有登录名和密码,但他们没有输入任何内容)还是未授权用户?我没有在web配置中声明任何模式。但它是一个web表单应用程序。@smirnov没有登录,就没有访问权限。用户登录并注销后,我可以通过地址ar或浏览器的后退按钮访问adminpanel.aspx。我已经检查了该链接,但我不为自己工作。我应该把你的代码放在哪里呢?你应该把它添加到AdminPanel.aspx的Page_Load()方法的开头。这些行将发送到浏览器“缓存控制:无缓存,无存储”和“Pragma:无缓存”并阻止缓存。因此,当用户通过地址栏或使用“后退”按钮再次访问页面时,浏览器将不会有现金版本。1)删除所有浏览器缓存和cookie(工具设置隐私),然后重试。2) 如果这不起作用,并且您在注销后仍然获得AdminPanel.aspx,请按Ctrl+F5刷新页面,以查看您是否将重定向到AdminPanelLogin。仍然相同,没有任何更改如果会话真的为空,请检查AdminPanelLogin.aspx,例如如果(会话[“AdminAuthentication”]=空)响应。写入(“空”);else-Response.Write(“session=“+session[“AdminAuthentication”]);
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetExpires(DateTime.Now);