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

时间:2015-11-03 10:27:40

标签: c# 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,我在Page_Load上有admin.aspx

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

这不能重定向非登录用户吗?

2 个答案:

答案 0 :(得分:0)

您需要检查会话是否为null,如下面的代码。不要空或空白。

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

答案 1 :(得分:0)

不,因为它正在检查Session是否为空字符串,但此处Session为空,即不是空字符串。因此情况失败了。

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

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