如何使用ASP.NET和SQL Server验证用户名和密码?

时间:2015-08-29 11:14:45

标签: c# asp.net

我正在尝试用C#编写一个asp.net代码,它基本上会有一个带有用户名和密码的登录页面。如果我输入用户名并传递为“admin”,则会打开Admin.aspx

同样地,对于“员工”,它是employee.aspx,对于“经理”,它是manager.aspx

我写了不少但最后卡住了..请帮助如何打开相应的页面..用户名和密码存储在数据库中,我必须将其与数据库匹配

protected void Button1_Click(object sender, EventArgs e)
{
     SqlConnection con = new SqlConnection("Data Source=(local);Initial Catalog=payroll;Integrated Security=True");
     SqlCommand cmd = new SqlCommand("Select employeeid FROM employees WHERE username='" + TextBox1.Text + "'and password='"+TextBox2.Text+"'", con);

     cmd.CommandType = CommandType.Text;
     cmd.Parameters.AddWithValue("@username", TextBox1.Text);
     cmd.Parameters.AddWithValue("@password", TextBox2.Text);

     con.Open();

     SqlDataReader dr = cmd.ExecuteReader();

     if (dr.Read())                         //I'M WRONG FROM HERE ONWARDS.
     {
        Response.Redirect("Admin.aspx"); 
     }

     con.Close();
     dr.Close();
}

3 个答案:

答案 0 :(得分:1)

您还需要一个额外的东西,即dropdown list,该下拉列表将用于指定用户类型。

或者更好的是,如果每个登录类型都有单独的页面。

答案 1 :(得分:1)

if (dr.Read()){                         
  if(dr.HasRow()){
    if(dr["username"].ToLower() == "admin"){ 
        Response.Redirect("Admin.aspx");
    }else if (dr["username"].ToLower() == "manager") {
        Response.Redirect("manager.asp");
    }//and more else if   
  }                                                

}

答案 2 :(得分:1)

你应该:

  • 真的使用参数化查询来避免SQL注入和其他混乱的业务
  • IDisposableSqlConnection等所有可支配对象放入SqlCommand
  • 同时阅读员工的using(...) { ... } employeeid以决定跳转到哪里
  • 避免使用有其缺点的role(参见)
  • 另外:您应该将密码存储在表格的 CLEAR TEXT 中!你应该总是哈希&加密你的密码 - 没有例外

试试这段代码:

AddWithValue