C# asp.net c中的登录页错误

C# asp.net c中的登录页错误,c#,asp.net,login-page,C#,Asp.net,Login Page,我有一个登录页面,我写了代码登录管理部分,但它不工作,我不知道是什么问题,这是正确的代码仍然获得未经授权的访问。帮帮我 string str = ConfigurationManager.ConnectionStrings["ottscon"].ConnectionString; using (SqlConnection con = new SqlConnection(str)) { SqlCommand cmd = new SqlCo

我有一个登录页面,我写了代码登录管理部分,但它不工作,我不知道是什么问题,这是正确的代码仍然获得未经授权的访问。帮帮我

  string str = ConfigurationManager.ConnectionStrings["ottscon"].ConnectionString;
        using (SqlConnection con = new SqlConnection(str))
        {
            SqlCommand cmd = new SqlCommand("Select UserName,Password from login where UserName=@userid and Password=@passid", con);
            con.Open();
            cmd.Parameters.AddWithValue("@userid", TextBox1.ToString());
            cmd.Parameters.AddWithValue("@passid", TextBox2.ToString());
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            DataSet ds= new DataSet();
            da.Fill(ds);
            if (ds.Tables[0].Rows.Count>0)
            {

               Session["login"] = TextBox1.Text;
               Response.Redirect("admintrator123/Default.aspx");
            }
            else
            {
                Label1.Text = "Unauthorized Access";
                Label1.ForeColor = System.Drawing.Color.Red;
            }
        }

首先使用文本框内文本的值现有ToString返回对象文本框的类型:

尝试使用此SQL检查新SqlCommand中是否存在记录:

因此,您可以检查布尔值,而不是行的存在,并对正在发生的事情有更多的了解

在此之后,您可以通过以下方式读取值:

using (var reader = cmd.ExecuteReader())
{
    while (reader.Read())
    {
        bool exist = reader.GetBoolean(0);
    }
}

首先使用文本框内文本的值现有ToString返回对象文本框的类型:

尝试使用此SQL检查新SqlCommand中是否存在记录:

因此,您可以检查布尔值,而不是行的存在,并对正在发生的事情有更多的了解

在此之后,您可以通过以下方式读取值:

using (var reader = cmd.ExecuteReader())
{
    while (reader.Read())
    {
        bool exist = reader.GetBoolean(0);
    }
}
试一试

删除

        cmd.Parameters.AddWithValue("@userid", TextBox1.ToString());
        cmd.Parameters.AddWithValue("@passid", TextBox2.ToString());
试一试

删除

        cmd.Parameters.AddWithValue("@userid", TextBox1.ToString());
        cmd.Parameters.AddWithValue("@passid", TextBox2.ToString());

您没有正确地传递值

TextBox1.ToString错误

使用


TextBox1.Text

您没有正确传递值

TextBox1.ToString错误

使用


TextBox1.Text

您是否将密码存储为纯文本?这有点危险,您应该考虑以哈希形式存储密码。当您直接在数据库上执行查询时,您是否获得了所传递参数的任何结果?您是否尝试过调试代码以检查数据集ds中的内容?运行SQL探查器并检查正在进行的查询。请尝试更改。tostring to.text首先检查您是否正在获取数据集中的行。如果不检查参数是否正确分配给sql命令。是否将密码存储为纯文本?这有点危险,您应该考虑以哈希形式存储密码。当您直接在数据库上执行查询时,您是否获得了所传递参数的任何结果?您是否尝试过调试代码以检查数据集ds中的内容?运行SQL探查器并检查正在进行的查询。请尝试更改。tostring to.text首先检查您是否正在获取数据集中的行。如果没有,请检查参数是否正确分配给sql命令。sql注入攻击!!这会使查询受到SQL注入攻击!SQL注入攻击!!这会使查询受到SQL注入攻击!仍然无法访问管理仪表板仍然无法访问管理仪表板
        cmd.Parameters.AddWithValue("@userid", TextBox1.ToString());
        cmd.Parameters.AddWithValue("@passid", TextBox2.ToString());