在 ASP.NET Core 中,重置密码时,如果密码输入不正确而导致的密码重置失败,往往会返回 null 值。这可能会导致一些安全隐患和错误。下面是一个
首先,需要在 ResetPassword 方法中添加一个返回值为 Task
在 ResetPassword 方法中,用 Try...Catch 语句捕获错误,并用返回 BadRequest 或 View 方法将错误信息反馈给用户。
具体代码示例如下:
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task
var user = await _userManager.FindByEmailAsync(model.Email);
if (user == null)
{
// 如果找不到用户,也应返回 BadRequest。
return BadRequest();
}
var result = await _userManager.ResetPasswordAsync(user, model.Code, model.Password);
if (result.Succeeded)
{
return RedirectToAction("ResetPasswordConfirmation", "Account");
}
// 如果密码重置失败,则返回 View 或 BadRequest。
foreach (var error in result.Errors)
{
ModelState.AddModelError(string.Empty, error.Description);
}
if (result.Errors.Any())
{
return View(model);
}
return BadRequest();
}