public async Task <ActionResult> Login(LoginViewModel model, string returnUrl) { if (!ModelState.IsValid) { return(View(model)); } // No cuenta los errores de inicio de sesión para el bloqueo de la cuenta // Para permitir que los errores de contraseña desencadenen el bloqueo de la cuenta, cambie a shouldLockout: true UsersClient api = new UsersClient(); User user = await api.CheckUserAsync(new User() { DNI = model.DNI, Password = Utilities.SHA256Encrypt(model.Password) }); Microsoft.AspNet.Identity.Owin.SignInStatus status = SignInStatus.Failure; if (user != null) { status = SignInStatus.Success; Utilities.LoggedUser = user; } switch (status) { case SignInStatus.Success: return(RedirectToAction("Index", "Home")); case SignInStatus.LockedOut: return(View("Lockout")); case SignInStatus.RequiresVerification: return(RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = model.RememberMe })); case SignInStatus.Failure: default: ModelState.AddModelError("", "Intento de inicio de sesión no válido."); return(View(model)); } }