Ошибка 400 с Identity Framework при входе в систему — OnPostAsync ⇐ C#
-
Anonymous
Ошибка 400 с Identity Framework при входе в систему — OnPostAsync
Проблема в том, что когда я вхожу в систему с заблокированной учетной записью, отображается модальное окно, но когда я пытаюсь войти снова, у меня появляется страница с ошибкой 400.
Этот код есть в моем Login.cshtml.cs:
public async Task OnPostAsync (строка returnUrl = null) { returnUrl ??= Url.Content("~/"); Внешний вход = (ожидание _signInManager.GetExternalAuthenticationSchemesAsync()).ToList(); если (ModelState.IsValid) { // Это не учитывает неудачные попытки входа в систему для блокировки учетной записи // Чтобы включить блокировку учетной записи при сбое пароля, установите lockoutOnFailure: true var result = await _signInManager.PasswordSignInAsync(Input.Email, Input.Password, Input.RememberMe, lockoutOnFailure: false); //------------------------ Последнее подключение регистратора DetalleUsuarioDA detalleUsuarioDA = новый DetalleUsuarioDA(); DetalleUsuario detalleUsuario = detalleUsuarioDA.GetDetalleUsuario(Input.Email); если (detalleUsuario != ноль) { detalleUsuario.UltimaConexion = DateTime.Now; подробноUsuarioDA.EditarDetalleUsuario(detalleUsuario); RegistroDA registroDA = новый RegistroDA(); Регистр Регистр = новый Регистр(); registro.DescripcionRegistro = "Начало сеанса с IP-адреса: " + HttpContext.Connection.RemoteIpAddress; registro.Fk_Usuario = подробноUsuario.Fk_User; registro.TipoRegistro = "Уведомление"; registro.FechaRegistro = DateTime.Now; registro.Estado = "Нет лейдо"; регистроDA.InsertRegistro(регистро); } //------------------------ Последнее подключение регистратора если (результат.Успешно) { if (detalleUsuario.EstadoUsuario == "Bloqueado") { ModelState.AddModelError(string.Empty, «Неверная попытка входа в систему.»); ViewData["showModalBloqueo"] = true; вернуть страницу(); } _logger.LogInformation("Пользователь вошел в систему."); вернуть LocalRedirect (returnUrl); } если (result.RequiresTwoFactor) { return RedirectToPage("./LoginWith2fa", new { ReturnUrl = returnUrl, RememberMe = Input.RememberMe }); } если (результат.IsLockedOut) { _logger.LogWarning("Учетная запись пользователя заблокирована."); return RedirectToPage("./Lockout"); } еще { ModelState.AddModelError(string.Empty, «Неверная попытка входа в систему.»); вернуть страницу(); } } // Если мы зашли так далеко, что-то не удалось, переотобразите форму вернуть страницу(); } этот код в Login.cshtml:
@страница @model ЛогинМодель @{ ViewData["Title"] = "Начальная сессия"; } Usuario Введите действительный адрес электронной почты. Контрасенья Оставить контраст?
Проблема в том, что когда я вхожу в систему с заблокированной учетной записью, отображается модальное окно, но когда я пытаюсь войти снова, у меня появляется страница с ошибкой 400.
Этот код есть в моем Login.cshtml.cs:
public async Task OnPostAsync (строка returnUrl = null) { returnUrl ??= Url.Content("~/"); Внешний вход = (ожидание _signInManager.GetExternalAuthenticationSchemesAsync()).ToList(); если (ModelState.IsValid) { // Это не учитывает неудачные попытки входа в систему для блокировки учетной записи // Чтобы включить блокировку учетной записи при сбое пароля, установите lockoutOnFailure: true var result = await _signInManager.PasswordSignInAsync(Input.Email, Input.Password, Input.RememberMe, lockoutOnFailure: false); //------------------------ Последнее подключение регистратора DetalleUsuarioDA detalleUsuarioDA = новый DetalleUsuarioDA(); DetalleUsuario detalleUsuario = detalleUsuarioDA.GetDetalleUsuario(Input.Email); если (detalleUsuario != ноль) { detalleUsuario.UltimaConexion = DateTime.Now; подробноUsuarioDA.EditarDetalleUsuario(detalleUsuario); RegistroDA registroDA = новый RegistroDA(); Регистр Регистр = новый Регистр(); registro.DescripcionRegistro = "Начало сеанса с IP-адреса: " + HttpContext.Connection.RemoteIpAddress; registro.Fk_Usuario = подробноUsuario.Fk_User; registro.TipoRegistro = "Уведомление"; registro.FechaRegistro = DateTime.Now; registro.Estado = "Нет лейдо"; регистроDA.InsertRegistro(регистро); } //------------------------ Последнее подключение регистратора если (результат.Успешно) { if (detalleUsuario.EstadoUsuario == "Bloqueado") { ModelState.AddModelError(string.Empty, «Неверная попытка входа в систему.»); ViewData["showModalBloqueo"] = true; вернуть страницу(); } _logger.LogInformation("Пользователь вошел в систему."); вернуть LocalRedirect (returnUrl); } если (result.RequiresTwoFactor) { return RedirectToPage("./LoginWith2fa", new { ReturnUrl = returnUrl, RememberMe = Input.RememberMe }); } если (результат.IsLockedOut) { _logger.LogWarning("Учетная запись пользователя заблокирована."); return RedirectToPage("./Lockout"); } еще { ModelState.AddModelError(string.Empty, «Неверная попытка входа в систему.»); вернуть страницу(); } } // Если мы зашли так далеко, что-то не удалось, переотобразите форму вернуть страницу(); } этот код в Login.cshtml:
@страница @model ЛогинМодель @{ ViewData["Title"] = "Начальная сессия"; } Usuario Введите действительный адрес электронной почты. Контрасенья Оставить контраст?
Мобильная версия