• Identity 更改密码的几种方式


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

  • 相关阅读:
    Android ble 蓝牙4.0 总结
    Java byte数据类型详解
    Cocos2d-X在SwitchControl使用
    【翻译mos文章】Linux x86 and x86-64 系统SHMMAX最大
    poj 2478 Farey Sequence(欧拉函数是基于寻求筛法素数)
    Akka FSM 源代码分析
    HDU 4828 (卡特兰数+逆)
    [JSP][JSTL]页面调用函数--它${fn:}内置函数、是推断字符串是空的、更换车厢
    android 中国通信乱码问题
    Recall(检出率)和 Precision(准确性)
  • 原文地址:https://www.cnblogs.com/liuyuanhao/p/4455813.html
Copyright © 2020-2023  润新知