J'ai défini ma page de connexion avec trois rôles, admin, employé, utilisateur.Lorsque je me connecte en tant qu'administrateur, je redirige vers Admin/Default.aspx, lors de la connexion en tant qu'employé sa redirection vers Employee/Default .aspx et lors de la connexion en tant qu'utilisateur sa redirection vers User/Default.aspx, je veux dire toutes les fonctionnalités de ces 3 rôles fonctionnent fien. Et supposons que j'ai créé un nouvel utilisateur dit Sumit pour lui je n'ai pas donné de rôle, dans ce cas il aurait dû être redirigé vers la page Default.aspx plutôt que sa redirection vers la page User/Default.aspx. Quelqu'un pourrait m'aider pls quelle est la raison ??? Voici mon code entier:Besoin d'aide dans l'authentification de la page
Login.aspx.cs:
protected void Login1_LoggedIn(object sender, EventArgs e)
{
Session["UserName"] = Login1.UserName;
Session["Password"] = Login1.Password;
string username = Login1.UserName.Trim();
string password = Login1.Password.Trim();
LoginBusinessLayer LB = new LoginBusinessLayer();
try
{
if (LB.GetLogin(username,password) == true)
{
if (Session["RoleName"].Equals("admin"))
{
FormsAuthentication.RedirectFromLoginPage(Login1.UserName, false);
Response.Redirect("Admin/Default.aspx");
}
else if (Session["RoleName"].Equals("employee"))
{
FormsAuthentication.RedirectFromLoginPage(Login1.UserName, false);
Response.Redirect("Employee/Default.aspx");
}
else if (Session["RoleName"].Equals("user"))
{
FormsAuthentication.RedirectFromLoginPage(Login1.UserName, false);
Response.Redirect("User/Default.aspx");
}
else
{
Response.Redirect("Default.aspx");//Control is not coming in this else part
}
}
}
catch(SqlException ex)
{
Response.Write(ex.Message);
}
finally
{
LB = null;
}
}
BusinessLayer.cs:
public class LoginBusinessLayer
{
public bool GetLogin(string userid, string userrole)
{
LoginDataLayer LD = new LoginDataLayer();
LD.GetUser(userid,userrole);
return true;
}
}
DataLayer.cs:
public class LoginDataLayer
{
SqlConnection con;
SqlCommand com;
SqlDataReader dr;
string check;
public bool GetUser(string userid, string rolename)
{
if (HttpContext.Current.Session["UserName"] != null)
{
con = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
con.Open();
check = "Select ur.UserId,ur.UserName,rl.RoleName from aspnet_Users as ur,aspnet_Roles rl,aspnet_UsersInRoles as ir where ur.UserName = '"+HttpContext.Current.Session["UserName"] + "' and ur.UserId=ir.UserId and ir.RoleId=rl.RoleId";
com = new SqlCommand(check, con);
dr = com.ExecuteReader(CommandBehavior.CloseConnection);
while (dr.Read())
{
if (dr.HasRows)
{
HttpContext.Current.Session["UserId"] = dr["UserId"].ToString();
HttpContext.Current.Session["RoleName"] = dr["RoleName"].ToString();
return true;
}
}
con.Close();
}
return false;
}
}
code ci-dessus highligted rouge est ne fonctionne pas.Votre réponse est très appréciée. Merci, Sumit
essayer de formater la question, il blesse sérieusement les yeux pour essayer de lire ce mur de texte. Essayez de mettre le fragment de code dans le format de code – Konstantinos