Estoy comparando la variable de sesión con una cadena para verificar si el tipo de inicio de sesión es administrador o no.comparando el valor de la variable de sesión con una cadena
Códigoestoy usando:
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";
}
Así que primero estoy comprobando si algún usuario ha iniciado sesión o no. Si el usuario inicia sesión con éxito, la variable de sesión "loggedInUsername" tendrá el valor del nombre de usuario. Si la variable de sesión "loggedInUsername" no está vacía, verificará la variable de sesión "loggedInUserType" para el tipo de usuario conectado.
Aquí viene lo raro, el valor de "loggedInUserType" es exactamente "Administrador" sin el "", en la función if donde estoy comparando la variable de sesión con la cadena "Administrator" se está omitiendo y va a el otro
Todas las variables de sesión son cada vez más valores cuando el usuario inicia sesión.
A continuación se muestra los datos que estoy usando para iniciar sesión y este disco es el único registro que tienen un tipo de "administrador".
¿Hay algún otro método para comparar una variable de sesión a una cadena
¿Qué quiere decir que está siendo omitidos? ¿Va a la declaración else? Es probable que sea un problema de casting. Pruebe Object.ReferenceEquals (a, b) o "Administrator" .Equals (Session ["..."]) –
Utilice un [Membership provider] (http://msdn.microsoft.com/en-us/library/ yh26yfzy.aspx) en su lugar. –