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

本文关键字:net 身份验证 错误 Asp 登录 用户 | 更新日期: 2023-09-27 18:08:19

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

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>

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

这部分代码

<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是否正确运行,并改进你的代码

检查用户是否有正确的登录名和密码后,您需要实际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>