Не могли бы вы рассказать мне, что не так в следующем коде? Он меняет пароль на новый, сохраняет его успешно в БД, отправляет сообщение пользователю, но когда я пытаюсь войти в систему с новым паролем, я получаю сообщение об ошибке:Сбросить пароль и отправить электронное письмо
Invalid username or password
protected void SendEmail(object sender, EventArgs e)
{
string username = string.Empty;
string password = string.Empty;
string newPassword = "temp_" + DateTime.Now.ToString("yyyyMMddHHmmss");
var manager = new UserManager();
string newPasswordHash = manager.PasswordHasher.HashPassword("newPassword");
string constr = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
using (SqlConnection con = new SqlConnection(constr))
{
using (SqlCommand cmd = new SqlCommand("SELECT Username, [PasswordHash] FROM AspNetUsers WHERE Email = @Email"))
{
cmd.Parameters.AddWithValue("@Email", txtEmail.Text.Trim());
cmd.Connection = con;
con.Open();
using (SqlDataReader sdr = cmd.ExecuteReader())
{
if (sdr.Read())
{
username = sdr["Username"].ToString();
password = sdr["PasswordHash"].ToString();
}
}
con.Close();
}
using (SqlCommand cmd = new SqlCommand("Update AspNetUsers set [email protected] WHERE [email protected]"))
{
cmd.Parameters.AddWithValue("@Password", newPasswordHash);
}
}
if (!string.IsNullOrEmpty(password))
{
MailMessage mm = new MailMessage("****@gmail.com", txtEmail.Text.Trim());
mm.Subject = "Password Recovery";
mm.Body = string.Format("Your temporary password is {0}<br /><br /> You are advised to login and change it immediately.<br /><br />Thank You.", newPassword);
mm.IsBodyHtml = true;
SmtpClient smtp = new SmtpClient();
smtp.Host = "smtp.gmail.com";
smtp.EnableSsl = true;
NetworkCredential NetworkCred = new NetworkCredential();
NetworkCred.UserName = "*****@gmail.com";
NetworkCred.Password = "*****";
smtp.UseDefaultCredentials = true;
smtp.Credentials = NetworkCred;
smtp.Port = 587;
smtp.Send(mm);
lblMessage.ForeColor = Color.Green;
lblMessage.Text = "A temporary password has been sent to your email address.";
}
else
{
lblMessage.ForeColor = Color.Red;
lblMessage.Text = "This email address does not match our records.";
}
}
логин. aspx.cs public partial class Account_Login: Страница { protected void Page_Load (отправитель объекта, EventArgs e) { RegisterHyperLink.NavigateUrl = "Регистрация"; //OpenAuthLogin.ReturnUrl = Request.QueryString ["ReturnUrl"]; var returnUrl = HttpUtility.UrlEncode (Request.QueryString ["ReturnUrl"]); if (! String.IsNullOrEmpty (returnUrl)) { RegisterHyperLink.NavigateUrl + = "? ReturnUrl =" + returnUrl; }}
protected void LogIn(object sender, EventArgs e)
{
if (IsValid)
{
// Validate the user password
var manager = new UserManager();
ApplicationUser user = manager.Find(UserName.Text, Password.Text);
if (user != null)
{
IdentityHelper.SignIn(manager, user, RememberMe.Checked);
IdentityHelper.RedirectToReturnUrl(Request.QueryString["ReturnUrl"], Response);
}
else
{
FailureText.Text = "Invalid username or password.";
ErrorMessage.Visible = true;
}
}
}
}
где вы выполняете ** команду обновления **? – shreesha