我正在将会话变量与字符串进行比较,以检查登录类型是否为管理员。
我使用的代码:
if (Session["loggedInUsername"] == null)
{
btnLogin.Text = "Sign In";
lblWelcome.Text = "Welcome!";
hypManageRestaurants.Enabled = false;
hypManageReviews.Enabled = false;
hypPostReviews.Enabled = false;
}
else
{
if (Session["loggedInUserType"] == "Administrator")
{
hypManageRestaurants.Enabled = true;
hypManageReviews.Enabled = true;
hypPostReviews.Enabled = true;
}
else
{
hypManageRestaurants.Enabled = false;
hypManageReviews.Enabled = false;
hypPostReviews.Enabled = true;
}
lblWelcome.Text = "Welcome " + Session["loggedInUsername"];
btnLogin.Text = "Sign Out";
}
首先,我正在检查是否有任何用户已经登录。如果用户成功登录,会话变量“loggedInUsername”将具有用户名的值。如果“loggedInUsername”会话变量不为空,则会检查“loggedInUserType”会话变量以获取已登录用户的类型。
这里出现了奇怪的事情,“loggedInUserType”的值恰好为“Administrator”,没有引号,当我将会话变量与字符串“Administrator”进行比较时,if函数被跳过并进入else。
所有会话变量在用户登录时都会获得值。
以下是我用于登录的数据,这条记录是唯一具有“Administrator”类型的记录。
是否有其他方法将会话变量与字符串进行比较?