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();

}

3、直接使用 UserManager.ChangePasswordAsync(User.Identity.GetUserId(), model.OldPassword, model.NewPassword) 方法验证旧密码和更改新密码。执行后的Identity Result 结果将由模型绑定的状态返回给视图。比如当前密码错误,密码的复杂度达不到要求等。

public async Task<ActionResult> ChangePassword(ChangePasswordViewModel model)
{
if (!ModelState.IsValid)
{
return View(model);
}
var result = await UserManager.ChangePasswordAsync(User.Identity.GetUserId(), model.OldPassword, model.NewPassword);
if (result.Succeeded)
{
return RedirectToAction("Index","Home");
}

AddErrors(result);   
return View(model);
}

最新文章

  1. html页面的CSS、DIV命名规则
  2. sqlserver中,查看某个函数的调用情况
  3. dojo grid 分页
  4. HDU1054Strategic Game(最小顶点覆盖数)
  5. HDU 3306 - Another kind of Fibonacci
  6. javascript第九课&quot;闭包&quot;
  7. android 调用系统打电话和发短,懒得记
  8. Python虚拟环境安装virtualenv
  9. 那些年我们写js烦的不疼不痒的错误
  10. php与web页面交互(二)
  11. FrameSet定义页面宽度并且居中
  12. C#入门基本概念
  13. MD5进行加密操作
  14. SpringBoot集成RabbitMQ消息队列搭建与ACK消息确认入门
  15. 活字格Web应用平台学习笔记3-显示数据列表
  16. 解决Ubuntu下adb无法联接手机终端
  17. WPF中使用BitmapImage处理图片文件(转)
  18. bzoj 1564 [NOI2009]二叉查找树(树形DP)
  19. Spark一个简单案例
  20. 安装es6转码工具babel,具体步骤

热门文章

  1. JavaBean映射工具dozer学习
  2. msp430入门编程34
  3. hdu3622 2-sat问题,二分+判断有无解即可。
  4. codechef Taxi Driver
  5. 【永久激活,视频教程,超级详细】IntelliJ idea 2018.3安装+激活+汉化
  6. weblogic负载分发
  7. mysql数据库优化之表的设计和慢查询定位
  8. 杭电1232畅通project
  9. 【Mongodb教程 第六课 】MongoDB 插入文档
  10. php 文件压缩zip扩展