Не могу войти после сброса пароля ASP. NET Core - PullRequest
0 голосов
/ 12 июля 2020

Я использовал 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.

...