我有一个从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");
}
}
这不能重定向非登录用户吗?
答案 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
}