管理员用户无法登录(基于角色)

时间:2014-08-05 11:23:57

标签: c# asp.net

我有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);
    }

}

请帮助,我尝试调试代码,我得到了空值。

1 个答案:

答案 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;
}
相关问题