Identity 更改密码的几种方式
2015-04-25 13:34
218 查看
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);
}
[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);
}
相关文章推荐
- spring提供的几种密码加密方式
- MYSQL修改密码的几种方式
- PHP之密码加密的几种方式
- Linux上mysql修改密码的几种方法和mysql忘记密码的修改方式
- Linux怎么更改文件的权限,更改权限有哪几种方式以及权限更入了解
- PHP处理密码的几种方式
- sqoop 使用过程中提供密码的几种方式详解
- RHEL 5服务篇—修改MySQl数据库root密码的几种方式
- PHP之密码加密的几种方式
- MySQL 初步安装后更改datadir目录几种方式
- 使用WEB方式更改域用户帐户密码
- Win2008使用WEB方式更改工作组计算机用户帐户密码
- Android记住账号和密码的几种方式
- mysql 数据库几种修改密码的方式以及忘记密码处理办法
- ASP.NET Core的身份认证框架IdentityServer4(8)- 使用密码认证方式控制API访问
- mysql修改密码几种方式
- VC更改View背景色的几种方式
- 在centos使用rpm包的方式安装mysql,以及更改root密码
- laravel更改默认的登录密码加密方式
- 详解PHP处理密码的几种方式