我已經設置了我的三個角色,admin,employee,user.When我的登錄頁面作爲管理員重定向到Admin/Default.aspx,當登錄爲員工重定向到員工/默認.aspx和當用戶登錄時重定向到User/Default.aspx,我的意思是這3個角色的所有功能都在工作。假設我已經爲他創建了新用戶Sumit,但我沒有給出任何作用,在這種情況下,它已被重定向到Default.aspx頁面,而不是重定向到User/Default.aspx頁面。有人可以幫我請問是什麼原因?這裏是我的全部代碼:需要幫助在頁面身份驗證
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;
}
}
上面紅色highligted代碼不工作。您的回覆非常感謝。 謝謝, Sumit
嘗試格式化該問題,它嚴重傷害眼睛嘗試閱讀這段文字牆。嘗試將代碼片段放入代碼格式 – Konstantinos 2009-04-10 10:24:33