繁体   English   中英

会话检查拒绝页面访问ASP.NET

[英]Session check deny page access ASP.NET

我有一个登录页面,该页面正在检查XML文件中的用户和密码,首先设置一个将用于会话的字符串,然后检查用户是否存在

string roleCheck = "";

            string userName = node.SelectSingleNode("username").InnerText;
        string passWord = node.SelectSingleNode("password").InnerText;
        string isAdmin = node.SelectSingleNode("role").InnerText;

        if (isAdmin == "admin" && userName == TextBoxUsername.Text && passWord == TextBoxPassword.Text)
        {
            roleCheck = "admin";
            Session["RoleCheck"] = roleCheck;
            Response.Redirect("admin.aspx");
        }

现在这是失败的地方,似乎即使不登录也可以访问admin.aspx,我在admin.aspx的Page_Load中有此设置

    protected void Page_Load(object sender, EventArgs e)
{
        if (Session["RoleCheck"] == "")
        {
            Response.Redirect("login.aspx");
        }
}

该重定向不应该登录的用户吗?

您需要检查会话是否为空,如以下代码所示。 不要检查为空还是空白。

protected void Page_Load(object sender, EventArgs e)
 {
      if (!IsPostBack)
        {
          if (Session["RoleCheck"] == null)
          {
              Response.Redirect("login.aspx");
          }
        }
  }

否,因为它正在检查Session是否为空字符串,但是在这里, Session为null,即不是空字符串。 因此条件失败。

您应该检查Session是否为空而不是空字符串。

if(Session["RoleCheck"] == null)
{
   // redirect
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM