c# - 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
,但密码确实没有更改。我无法使用新密码登录。有什么建议么?我错过了什么?
解决方案
在这种情况下,您应该使用 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();
}
推荐阅读
- java - 如何解决编译器警告
- javascript - copy text to clipboard by click on parent element
- nginx - Nginx map 指令只使用一个条件
- php - Laravel 7.5.2 $errors 未显示在刀片上
- django - 如何通过 DRF 中的 GET 请求获取包括关系表条目在内的数据
- javascript - JavaScript - 1. .splice() 行为怪异 2. .classList.add 行为怪异
- r - Shinydashboard:创建复选框的动态框,过滤所有输入
- mysql - sql 从 2 表中选择和计数
- php - 使用 $wpdb 从 WordPress 中的数据库获取行会导致严重错误
- cypress - 将 2 个 cypress 脚本合并到 1 个