【问题标题】:Change password in ASP.NET Core 2.x在 ASP.NET Core 2.x 中更改密码
【发布时间】:2018-08-02 07:08:17
【问题描述】:

如何在 Asp core 2.x 中通过管理员更改用户密码?

或用短信代码更改密码

我的示例代码:

if (!ModelState.IsValid)
    return View(model);

var user = await _userManager.FindByNameAsync(model.UserName);
if (user == null)
    return RedirectToAction("Index");

if (model.smsCode == user.SmsCode)
{
    user.PasswordHash = model.NewPassword;

    IdentityResult result = await _userManager.UpdateAsync(user);
    if (result.Succeeded)
    {
    }
}

错误:在 db 中保存 unhash pass

【问题讨论】:

  • 错误告诉你密码需要在保存前进行哈希处理。保存明文密码是一个很大的禁忌。
  • 您是否尝试将纯文本密码保存到 PasswordHash 字段中?我希望您在保存之前必须对 model.NewPassword 进行哈希处理

标签: c# asp.net-core-2.0 asp.net-core-identity


【解决方案1】:

我们不应该用纯文本更新 user.PasswordHash,而应该使用 Hash。

        var user = await _userManager.FindByNameAsync(model.UserName);
        if(user == null){ /**/ }
        if (model.smsCode != user.SmsCode){ /**/}

        // compute the new hash string
        var newPassword = _userManager.PasswordHasher.HashPassword(user,newpass);
        user.PasswordHash = newPassword;
        var res = await _userManager.UpdateAsync(user);

        if (res.Succeeded) {/**/}
        else { /**/}

【讨论】:

    猜你喜欢
    • 2018-07-04
    • 2019-05-01
    • 2019-05-09
    • 1970-01-01
    • 2019-09-08
    • 2014-09-07
    • 2015-05-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多