首页 > 解决方案 > ResetPasswordAsync 返回成功但不更改密码

问题描述

我有以下代码来重置用户的密码(实际上没有密码):

ApplicationUser u1 =  _userManager.FindByEmailAsync("aclowneyb8@un.org").Result;
string resetToken1 = _userManager.GeneratePasswordResetTokenAsync(u1).Result;
IdentityResult r1 = _userManager.ResetPasswordAsync(u1, resetToken1, "12345Da*").Result;

r1返回succeed,但密码确实没有更改。我无法使用新密码登录。有什么建议么?我错过了什么?

标签: c#asp.net-core.net-coreasp.net-core-mvc

解决方案


在这种情况下,您应该使用 async 和 await 来执行您的代码

下面是我的例子

[HttpPost("ResetPassword"), ValidModel, AllowAnonymous]
public async Task<IActionResult> ResetPassword([FromBody]ResetPasswordViewModel model)
{
    if (string.IsNullOrEmpty(model.Token) || string.IsNullOrEmpty(model.Email))
    {
        return RedirectToAction("Index", "Error", new { statusCode = AppStatusCode.NotFound });
    }

    var isResetTokenValid = await _userManager.CheckValidResetPasswordToken(model.Token, model.Email);

    if (!isResetTokenValid || string.IsNullOrEmpty(model.Email))
    {
        return StatusCode(AppStatusCode.ResetPassTokenExpire);
    }

    var user = await _userManager.FindByEmailAsync(model.Email);
    if (user == null)
    {
        return Ok();
    }

    await _userManager.ResetPasswordAsync(user, model.Token, model.Password); // use await here
    return Ok();
}

推荐阅读