Я использовал ASP. NET Core 3.1 с MVC, когда я использую ResetPassword
метод:
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<IActionResult> ResetPassword(ResetPasswordViewModel model)
{
if (!ModelState.IsValid)
{
return View(model);
}
var user = await _userManager.FindByEmailAsync(model.Email);
if (user == null)
{
// Don't reveal that the user does not exist
return RedirectToAction(nameof(ResetPasswordConfirmation));
}
var result = await _userManager.ResetPasswordAsync(user, model.Code, model.Password);
if (result.Succeeded)
{
return RedirectToAction(nameof(ResetPasswordConfirmation));
}
AddErrors(result);
return View();
}
он отлично работает без каких-либо проблем Я проверяю базу данных и нахожу этот пароль был изменен, а также SecurityStamp
.
при попытке входа в систему с использованием метода входа:
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Login(LoginViewModel model, string returnUrl = null)
{
ViewData["ReturnUrl"] = returnUrl;
if (ModelState.IsValid)
{
// To enable password failures to trigger account lockout, set lockoutOnFailure: true
try
{
var user1 = await _userManager.FindByEmailAsync(model.Email);
var password = await _userManager.CheckPasswordAsync(user1, model.Password);
var result = await _signInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, lockoutOnFailure: false);
if (result.Succeeded)
{
_logger.LogInformation("User logged in.");
return RedirectToAction("Index", "DashBoard");
}
if (result.RequiresTwoFactor)
{
return RedirectToAction(nameof(LoginWith2fa), new { returnUrl, model.RememberMe });
}
if (result.IsLockedOut)
{
_logger.LogWarning("User account locked out.");
await _context.Clients.All.SendAsync("refreshbannedUsers");
return RedirectToAction(nameof(Lockout));
}
else
{
ViewBag.Result = "Err";
ModelState.AddModelError(string.Empty, _localizer["Invalidloginattempt"]);
return View(model);
}
}
catch (Exception ex)
{
ViewBag.Result = "Err";
ModelState.AddModelError(string.Empty, _localizer["Invalidloginattempt"]);
return View(model);
}
}
// If we got this far, something failed, redisplay form
return View(model);
У меня всегда возникала ошибка, я пытаюсь проверить пароль с помощью этого кода
var password = await _userManager.CheckPasswordAsync(user1, model.Password);
Я всегда получал false, что означает, что пароль был изменен на другой, который я добавил в изменение пароля, несмотря на его возврат Succeeded
.