我將會話變量與字符串進行比較以檢查登錄類型是否是管理員。我使用將會話變量值與字符串進行比較
代碼:
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)。 –