Xác thực người dùng từ cơ sở dữ liệu trong ASP.Net
Khi bạn kiểm tra thông tin đăng nhập từ Web.config, bạn sử dụng phương thức Authenticate. Khi bạn kiểm tra thông tin đăng nhập từ cơ sở dữ liệu, bạn phải viết mã để kiểm tra tên đăng nhập và mật khẩu đã có trong cơ sở dữ liệu chưa
private void butSignOn_Click(object sender, System.EventArgs e)
{
if (CheckPassword(txtUserName.Text, txtPassword.Text))
FormsAuthentication.RedirectFromLoginPage(txtUserName.Text, true);
else
{
txtPassword.Text = "";
spnNote.InnerText =
"User name or password not found. Try again.";
if (System.Convert.ToInt32(ViewState["Tries"]) > 1)
Response.Redirect("Denied.htm");
else
{
ViewState["Tries"] =
System.Convert.ToInt32(ViewState["Tries"]) + 1;
if (System.Convert.ToInt32(ViewState["Tries"]) > 3)
Response.Redirect("Denied.htm");
}
}
}
Hàm trợ giúp CheckPassword mã hóa mật khẩu và tìm và so sánh tên đăng nhập và mật khẩu đã mã hóa trong cơ sở dữ liệu
private bool CheckPassword(string UserName, string Password)
{
bool bSuccess = false;
Password =
FormsAuthentication.HashPasswordForStoringInConfigFile(Password,
"SHA1");
OleDbCommand oleCommand = new OleDbCommand("SELECT * FROM Users" + " WHERE UserName='" + txtUserName.Text + "'", oledbUsers);
try
{
oledbUsers.Open();
OleDbDataReader rdrUsers = oleCommand.ExecuteReader();
while (rdrUsers.Read())
{
if (Password == rdrUsers["Password"].ToString())
bSuccess = true;
}
oledbUsers.Close();
}
catch
{
bSuccess = false;
oledbUsers.Close();
}
return bSuccess;
}