ResetPasswordAsync返回成功,但不更改密码

时间:2019-09-05 13:41:49

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

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

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

r1返回succeed,但密码确实未更改。我无法使用新密码登录。有什么建议么?我想念的是什么?

1 个答案:

答案 0 :(得分:1)

在这种情况下,您应该使用async并等待以执行代码

下面是我的例子

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