我将会话变量与字符串进行比较以检查登录类型是否是管理员。我使用将会话变量值与字符串进行比较
代码:
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”,没有“”,在if函数中,我将会话变量与字符串“Administrator”进行比较,正在跳过并转到其他。
所有会话变量越来越值当。
用户登录下面是我使用的登录数据和这个纪录是有一种类型的“管理员”的唯一记录。
是否有任何其他的方法来会话变量比较字符串
你的意思是它被忽略?它会进入else语句吗?这可能是一个铸造问题。尝试使用Object.ReferenceEquals(a,b)或“Administrator”.Equals(Session [“...”]) –
使用[Membership provider](http://msdn.microsoft.com/zh-cn/library/改为yh26yfzy.aspx)。 –