我有Super Admin创建用户的功能。对于Ex:SuperUser创建管理员。
然后,我无法使用管理员详细信息登录。管理员的数据存储在表中。我确信它基于角色的问题。但我并没有准确到达它所处的位置。请参阅代码供您参考: -
角色定义: -
<div class="form_div">
<div class="normalText3">
<div class="txtlbl">Username:</div>
<div>
<asp:TextBox ID="txtUsername" runat="server" CssClass="form_txtfld"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server" ControlToValidate="txtUsername" ErrorMessage="*" ></asp:RequiredFieldValidator>
</div>
</div>
<div class="normalText3">
<div class="txtlbl">Password:</div>
<div>
<asp:TextBox ID="txtPassword" runat="server" TextMode="Password" CssClass="form_txtfld"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator4" runat="server" ControlToValidate="txtUsername" ErrorMessage="*" ></asp:RequiredFieldValidator>
</div>
</div>
<div class="normalText3">
<div class="txtlbl"></div>
<div>
<asp:Button ID="btnLogin" runat="server" Text="Login" CssClass="button-form" onclick="btnLogin_Click" />
</div>
</div>
</div>
登录数据的代码隐藏: -
protected void btnLogin_Click(object sender, EventArgs e)
{
String LoginID = txtUsername.Text.Trim().ToLower();
String LoginPassword = txtPassword.Text.Trim();
LoginLogic _LoginLogic = new LoginLogic();
DataSet dsLoginDetails = _LoginLogic.Ds_getLoginDetails(LoginID, LoginPassword);
if (dsLoginDetails.Tables[0].Rows.Count > 0)
{
if (LoginID.ToLower() == "mserm")
{
Session["user"] = LoginID;
Session["role"] = UserRoles.RELATIONSHIPMANAGER;
Session["password"] = LoginPassword;
Response.Redirect("mseLoanApplications.aspx");
}
else if (LoginID.ToLower() == "msebo")
{
Session["user"] = LoginID;
Session["role"] = UserRoles.BUSINESSOFFICER;
Session["password"] = LoginPassword;
Response.Redirect("mseLoanApplications.aspx");
}
else if (LoginID.ToLower() == "mser")
{
Session["user"] = LoginID;
Session["role"] = UserRoles.RISKOFFICER;
Session["password"] = LoginPassword;
Response.Redirect("mseLoanApplications.aspx");
}
else if (LoginID.ToLower() == "fxadmin")
{
Session["user"] = LoginID;
Session["role"] = "fxadmin";
Session["password"] = LoginPassword;
Response.Redirect("rblfileuploader.aspx");
}
else if (LoginID.ToLower() == "mediaadmin")
{
Session["user"] = LoginID;
Session["role"] = "mediaadmin";
Session["password"] = LoginPassword;
Response.Redirect("mediakitadmin.aspx");
}
else if (LoginID.ToLower() == "dropboxadmin")
{
Session["user"] = LoginID;
Session["role"] = "dropboxadmin";
Session["password"] = LoginPassword;
Response.Redirect("dropboxadmin.aspx");
}
else if (LoginID.ToLower() == "careeradmin")
{
Session["user"] = LoginID;
Session["role"] = "careeradmin";
Session["password"] = LoginPassword;
Response.Redirect("CareerJobList.aspx");
}
else if (LoginID.ToLower() == "careersa")
{
Session["user"] = LoginID;
Session["role"] = "careersa";
Session["password"] = LoginPassword;
Response.Redirect("CareerJobList.aspx");
}
else
{
Session["user"] = LoginID;
Session["role"] = "admin";
Session["password"] = LoginPassword;
Response.Redirect("CareerJobList.aspx");
}
}
else
{
String sc = "<Script>alert('Can not Login. Invalid Username or Password')</script>";
ScriptManager.RegisterClientScriptBlock(this, typeof(Page), "Ad" + DateTime.Now, sc, false);
}
}
请帮助,我尝试调试代码,我得到了空值。
答案 0 :(得分:0)
您在Ds_getLoginDetails
方法的评论中提供的以下代码:
public class LoginLogic
{
public LoginLogic();
public void ChangePassword(string LoginID, string LoginPassword);
public DataSet Ds_getLoginDetails(string LoginID, string LoginPassword);
}
Ds_getLoginDetails
方法不会返回任何数据,也不会查询您的数据库。
当您初始化LoginLogic
的新实例并调用Ds_getLoginDetails
时,您实际上永远不会返回对象。
您的登录详细信息应如下所示:
public DataSet Ds_getLoginDetails(string LoginID, string LoginPassword)
{
var ds = new DataSet();
using (var conn = new SqlConnection("Your connection string comes here"))
using (var cmd = conn.CreateCommand())
{
conn.Open();
cmd.CommandText = "select * from Users where LoginID=@LoginID and Password=@Password";
cmd.Parameters.AddWithValue("@LoginID", LoginID);
cmd.Parameters.AddWithValue("@Password", LoginPassword);
var adapter = new SqlDataAdapter(cmd);
adapter.Fill(ds);
}
return ds;
}