Asp.net身份验证错误未登录用户

时间:2016-09-22 08:37:39

标签: c# asp.net sql-server login parameterized

我有我的登录表单,我试图参数查询登录用户。但它似乎给用户登录失败的错误。我的代码在这里。请告诉我这里我做错了什么。

public void LoginUser()
{
    string UserNameFromHTML = Page.Request.Form["UserNameIput"];
    string UserPasswordFromHTML = Page.Request.Form["UserPasswordInput"];
    string QueryString = "SELECT User_Id, User_Name, User_Password FROM um_Personnel WHERE User_Name = @UserName and User_Password = @UserPassword";
    SqlCommand Command = new SqlCommand();
    Command.CommandText = QueryString;
    Command.Connection = ConnectionString;
    Command.Parameters.AddWithValue("@UserName", UserNameFromHTML);
    Command.Parameters.AddWithValue("@UserPassword", UserPasswordFromHTML);
    using (SqlDataAdapter Data_Adapter = new SqlDataAdapter(Command))
    {
        DataSet Data_Set = new DataSet();
        Data_Adapter.Fill(Data_Set);
        if (Data_Set.Tables[0].Rows.Count > 0)
        {
            Response.Redirect("CMS/Dashboard.aspx");
        }
    }
}

我在按钮onClick事件中调用此函数

<button type="submit" class="submit" onclick='<% LoginUser(); %>'>

完整的HTML代码就在这里

<fieldset>
            <legend class="legend">User Login</legend>
            <div class="input">
                <input type="text" placeholder="Enter User Name" id="UserNameIput" required />
                <span><i class="fa fa-envelope-o"></i></span>
            </div>
            <div class="input">
                <input type="password" placeholder="Enter Password" id="UserPasswordInput" required />
                <span><i class="fa fa-lock"></i></span>
            </div>
            <button type="submit" class="submit" onclick='<% LoginUser(); %>'><i class="fa fa-long-arrow-right"></i></button>
        </fieldset>

2 个答案:

答案 0 :(得分:1)

这部分代码

<input type="text" placeholder="Enter User Name" id="UserNameIput" required />

不包含返回参数的name属性。 要使其有效,请添加name(我所看到的 id 未使用),并将其设为:

<input type="text" placeholder="Enter User Name" name="UserNameIput" required />

然后您可以从后面的代码获取输入:

Page.Request.Form["UserNameIput"];

对于获取代码背后的值或使用服务器控件所需的所有输入执行相同操作。我问你是否一步一步调试你的代码,但显然你没有这样做,也没有检查你是否对这些值有任何看法。所以你可能会有更多的错误。

逐步调试代码并检查参数,检查sql是否正常运行 - 并改进代码。

答案 1 :(得分:0)

在您检查用户是否拥有正确的登录名和密码后,您需要实际Login该用户。

public void LoginUser()
{
    string UserNameFromHTML = Page.Request.Form["UserNameIput"];
    string UserPasswordFromHTML = Page.Request.Form["UserPasswordInput"];
    string QueryString = "SELECT User_Id, User_Name, User_Password FROM um_Personnel WHERE User_Name = @UserName and User_Password = @UserPassword";
    SqlCommand Command = new SqlCommand();
    Command.CommandText = QueryString;
    Command.Connection = ConnectionString;
    Command.Parameters.AddWithValue("@UserName", UserNameFromHTML);
    Command.Parameters.AddWithValue("@UserPassword", UserPasswordFromHTML);
    using (SqlDataAdapter Data_Adapter = new SqlDataAdapter(Command))
    {
        DataSet Data_Set = new DataSet();
        Data_Adapter.Fill(Data_Set);
        if (Data_Set.Tables[0].Rows.Count > 0)
        {
            FormsAuthentication.RedirectFromLoginPage(UserNameFromHTML, true); //will return the user to the page who needs a user who is logged in            
        }
        else
        {
            Responce.Redirect("~/Home/Index/");
        }
    }
}

Web.config添加此内容:

<authentication mode="Forms">
    <forms name=".ASPXFORMSDEMO" loginUrl="logon.aspx" protection="All" path="/" timeout="30" />
</authentication>

您可以查看this页面以获得基本开始。

相关问题