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

  • 相关阅读:
    怎样应对突发性的开发需求
    ASP.NET过滤HTML标签只保留换行与空格的方法
    sqlserver 各种判断是否存在(表名、函数、存储过程等)
    Timing advance of GSM(时间提前量)
    对.NET中Hashtable和ArryList的理解
    GPS原始经纬度转百度经纬度
    baidu经纬度坐标与google经纬度坐标都转换
    .NET资料之-根据两点经纬度计算直线距离
    .net处理JSON简明教程
    在asp.net中要不使用其他插件的情况下只能使用定时器来检查, 并执行任务.
  • 原文地址:https://www.cnblogs.com/liuyuanhao/p/4455813.html
Copyright © 2020-2023  润新知