public async Task <ActionResult> Login(LoginViewModel model, string returnUrl) { if (!ModelState.IsValid) { return(View(model)); } using (ConexionEjecucionDB db = new ConexionEjecucionDB()) { ///revisar esta logica var user = db.AspNetUsers.Where(x => x.Email == model.Email).FirstOrDefault(); if (user == null) { ModelState.AddModelError("", "Intento de inicio de sesión no válido."); return(View(model)); } var block = db.AspNetUsersBlock.Where(y => y.UserId == user.Id).FirstOrDefault(); if (block != null) { return(new RedirectToRouteResult(new RouteValueDictionary(new { action = "Bloqueado", controller = "Error" }))); } else { var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout : true); switch (result) { case SignInStatus.Success: return(RedirectToLocal(returnUrl)); 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)); } } } // 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 //var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: true); //switch (result) //{ // case SignInStatus.Success: // return RedirectToLocal(returnUrl); // 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); //} }