【问题标题】:ASP.NET prevent accessing the homepage before and after logoutASP.NET 防止在注销前后访问主页
【发布时间】:2014-07-15 13:01:09
【问题描述】:

我有一个登录页面和一个主页。没有登录就无法访问主页,但是在我登录并单击主页上的注销后。用户可以从浏览器的地址行访问主页。怎样才能防止这种情况?这是我的实现

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 adminPanelLogoutLink_Click(object sender, EventArgs e)
    {
        Session["AdminAuthentication"] = null;
        Session.Abandon();
        Response.Redirect("AdminPanelLogin.aspx");
    }

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吗?
  • 你用的是什么认证方式?
  • 代码看起来不错,应该可以按预期工作。您能否确认:您有无需输入登录名和密码即可访问 AdminPanel.aspx 的用户?这些用户是授权用户(有登录名和密码,但他们没有输入任何内容)还是这些用户没有授权?
  • 我没有在网络配置中声明任何模式。但它是一个网络表单应用程序。
  • @smirnov 没有登录,就无法访​​问。用户登录并注销后,我可以通过地址 ar 或浏览器的后退按钮访问 adminpanel.aspx。

标签: c# asp.net session login session-cookies


【解决方案1】:

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

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

或使用http://www.codeproject.com/Tips/135121/Browser-back-button-issue-after-logout.aspx中的任何其他方法

【讨论】:

  • 我已经检查了该链接,但我不适合我。我应该把你的代码准确地放在哪里?
  • 您应该在 AdminPanel.aspx 的 Page_Load() 方法的开头添加它。这些行向浏览器发送“Cache-Control: no-cache, no-store”和“Pragma: no-cache”并阻止缓存。因此,当用户通过地址栏或使用返回按钮再次访问该页面时,浏览器将不会有兑现版本。
  • 1) 删除所有浏览器缓存和cookies(工具-设置-隐私),然后重试。 2)当这不起作用并且您在退出后仍然得到AdminPanel.aspx时,按Ctrl+F5刷新页面,看看您是否会被重定向到AdminPanelLogin。
  • 还是一样,没什么变化
  • 检查 AdminPanelLogin.aspx 如果会话真的为空,例如if (Session["AdminAuthentication"] == null) Response.Write("NULL");否则 Response.Write("session=" + Session["AdminAuthentication"]);
猜你喜欢
  • 2011-03-28
  • 1970-01-01
  • 2013-11-26
  • 2017-06-30
  • 2016-02-06
  • 2015-07-16
  • 2016-12-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多