Utiliser asp.net et C# et visual studio 2010 J'ai une page de connexion et un contrôle de connexion dedans et je fais quelque chose qui quand un utilisateur essaie de se connecter, il va détecter l'utilisateur rôle. Voici mon code:Impossible de détecter le rôle de l'utilisateur
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Configuration;
using System.Data.SqlClient;
using System.Web.Security;
public partial class Login : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Login1_LoggedIn(object sender, EventArgs e)
{
if (Session["Admin"] != null)
{
Response.Redirect("~/Admin/HomeAdmin.aspx");
}
else if (Session["Professor"] != null)
{
Response.Redirect("~/Professor/HomeProfessor.aspx");
}
else if (Session["Student"] != null)
{
Response.Redirect("~/Student/HomeStudent.aspx");
}
}
protected void Login1_LoggingIn(object sender, LoginCancelEventArgs e)
{
if (Roles.IsUserInRole("Administor"))
{
Session["Admin"] = Login1.UserName;
//only run for admins
}
else if (Roles.IsUserInRole("Professor"))
{
Session["Professor"] = Login1.UserName;
//only run for professors
}
else if (Roles.IsUserInRole("Student"))
{
Session["Student"] = Login1.UserName;
//only run for students
}
}
}
Puis, quand je me connecte, il détecte le mauvais rôle, par exemple je me connecte avec un utilisateur Admin mais il détectera comme un étudiant! Et comme vous le voyez dans le code, il me redirigera vers la page (HomeStudent.aspx).
est ici une vue de mon rôle de gestionnaire: Click here to see the image of my role manager
Que pensez-vous est le problème et que dois-je faire? !!
Pourquoi ne mettez-vous pas le rôle dans une 'session [ « rôle »]' et attribuer une valeur différente à chaque connexion . Ensuite, sur l'événement 'Login1_LoggingIn', vous pouvez d'abord réinitialiser votre session avec' Session.Clear() ', puis l'affecter à la nouvelle valeur – Ange1
Vous voulez créer 3 pages de connexion? (pour chaque rôle une page de connexion?) –
Non, pas du tout. Juste la Session ["Rôle"] aura trois valeurs, basées sur le rôle connecté, comme ceci: 'if (Roles.IsUserInRole (" Administor ")) { Session [" Role "] =" Administrateur "; // Exécuter uniquement pour les administrateurs } sinon if (Roles.IsUserInRole ("Professor")) { Session ["Role"] = "Professor"; // exécute uniquement pour les professeurs } ' puis appelle la valeur de la Session, au lieu de vérifier si elle est' null'. Je n'ai pas vérifié au détail le code ci-dessus, mais probablement cela devrait fonctionner – Ange1