1、先使用UserManager.RemovePassword(UserID),清空密码,再使用UserMnager.AddPassword(UserId,newPassword)增加新密码。
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult ChangePassword(ChangePasswordViewModel userViewModel)
{
var userId = User.Identity.GetUserId();
var _user = UserManager.FindById(userId);
if (ModelState.IsValid)
{
if (UserManager.CheckPassword(_user, userViewModel.OldPassword)) //UserManager.CheckPasswrod检查 密码是否正确。
{
UserManager.RemovePassword(userId); //清空旧密码。
UserManager.AddPassword(userId, userViewModel.NewPassword); //加入新密码.
return RedirectToAction("Index");
}
else
{
ModelState.AddModelError("", "输入的旧密码不正确");
return View(userViewModel);
}
}
else
{
ModelState.AddModelError("", "绑定失败");
return View(userViewModel);
}
}
2、利用UserManager.GerneratePasswordResetTokeno为用户创建一个重置密码的GUID值,然后调用 ResetPassword(UserId,GUID,newPassword)值重新创建密码;
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult ChangeUserPassword(ResetPasswordViewModel _resetPasswordViewModel)
{
if (!ModelState.IsValid)
{
return View(_resetPasswordViewModel);
}
var _user = UserManager.FindByName(_resetPasswordViewModel.UserName);
if (_user == null)
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
var code =UserManager.GeneratePasswordResetToken(_user.Id); //为用户创建一个重置密码的GUID值
var result =UserManager.ResetPassword(_user.Id,code,_resetPasswordViewModel.Password); //重新创建密码;
if (result.Succeeded)
{
return RedirectToAction("Index");
}
return View();
}