Ich habe meine Login-Seite mit drei Rollen, admin, Mitarbeiter, Benutzer.Wenn ich mich als Admin anmelden seine Umleitung zu Admin/Default.aspx, wenn als Mitarbeiter einloggen seine Umleitung zu Employee/Default .aspx und wenn ich als Benutzer seine Umleitung zu User/Default.aspx anmelde, meine ich, dass alle Funktionen dieser 3 Rollen funktionieren. Und angenommen, ich habe einen neuen Benutzer erstellt, sage Sumit für ihn, dass ich keine Rolle gegeben habe, in diesem Fall hätte er auf die Seite Default.aspx umgeleitet werden müssen, statt auf die Seite User/Default.aspx umzuleiten. Könnte jemand mir helfen pls was ist der Grund ??? Hier ist meine gesamte Code:Benötigen Sie Hilfe bei der Seitenauthentifizierung
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;
}
}
Above red highligted Code ist funktioniert nicht.Ihre Antwort wird sehr geschätzt. Danke, Sumit
versuchen Sie, die Frage zu formatieren, es schmerzt ernsthaft die Augen zu versuchen, diese Wand des Textes zu lesen. Versuchen Sie, das Code-Fragment in das Code-Format – Konstantinos