Проверка входа в систему не работает с 3-уровневой архитектурой
с любыми входными данными он входит в приложение.
Уровень данных:
public DataSet Userlogin(Users objlogin) { SqlConnection con = new SqlConnection(ConnString); SqlCommand cmd = new SqlCommand("SELECT * FROM User_details WHERE [Login Id]=@loginid AND [Password]=@password", con); cmd.Parameters.AddWithValue("@loginid", objlogin.loginId); cmd.Parameters.AddWithValue("@password", objlogin.Password); SqlDataAdapter da = new SqlDataAdapter(cmd); DataSet ds = new DataSet(); da = new SqlDataAdapter(cmd); da.Fill(ds); return ds; //DataTable dt = new DataTable(); //da.Fill(dt); //return (dt); }
БЛЛ:
public DataSet Userlogin(Users objUser) { DataLayer objUserDAL = new DataLayer(); try { return objUserDAL.Userlogin(objUser); } catch (Exception ex) { throw ex; } }
Уровень пользовательского интерфейса:
<pre> protected void btnlogin_Click(object sender, EventArgs e) { Users objuser = new Users(); objuser.loginId = loginid.Text; objuser.Password = pwd.Text; DataSet ds = new DataSet(); //DataTable dt = new DataTable(); BAL objBAL = new BAL(); ds= objBAL.Userlogin(objuser); if(ds.Tables.Count>0) { Session["User"] = loginid.Text; Response.Redirect("~/Transactions.aspx"); } else { Response.Write("<script>alert('Invalid Credentials!')</script> "); } } } }
Что я уже пробовал:
Он работает с одноуровневым кодом ниже
<pre> protected void btnlogin_Click(object sender, EventArgs e) { String strConnString = ConfigurationManager.ConnectionStrings["conString"].ConnectionString; SqlConnection con = new SqlConnection(strConnString); SqlCommand cmd = new SqlCommand("SELECT * FROM User_details WHERE [Login Id]=@loginid AND [Password]=@password",con ); cmd.Parameters.Add("@loginid", SqlDbType.VarChar).Value = loginid.Text; cmd.Parameters.Add("@password", SqlDbType.VarChar).Value = pwd.Text; SqlDataAdapter da = new SqlDataAdapter(cmd); DataTable dt = new DataTable(); da.Fill(dt); if(dt.Rows.Count > 0) { Session["User"] = loginid.Text; Response.Redirect("Transactions.aspx"); } else { Response.Write("<script>alert('Invalid Credentials!')</script> "); } }
Richard Deeming
НИКОГДА храните пароли в виде обычного текста!
Безопасная Аутентификация Паролем Объясняется Просто[^]
Соленое хэширование паролей - делаем это правильно[^]
И почему вы заново изобретаете колесо? ASP.NET имеет несколько совершенно хороших встроенных систем аутентификации - например, Личность ASP.NET [^]