public async Task<ActionResult> Login(LoginViewModel model, string returnUrl) { if (!ModelState.IsValid) { return View(model); } // authenticate against the client var response = ClientAdapter.GetProfile(model.Email, model.Password); if (!string.IsNullOrEmpty(response.Error)) { ModelState.AddModelError("", "Invalid login attempt."); return View(model); } // register only the new user var user = await SignInManager.UserManager.FindByEmailAsync(model.Email); if (user != null) return RedirectToLocal(returnUrl); user = new ApplicationUser { UserName = model.Email, Email = model.Email, LoginUrl = ClientAdapter.LoginUrl, Profile = response.GetProfileInJson() }; try { var result2 = await UserManager.CreateAsync(user, model.Password); if (result2.Succeeded) { await SignInManager.SignInAsync(user, isPersistent: false, rememberBrowser: false); return RedirectToAction("Index", "Home"); } } catch (Exception ex) { Debug.WriteLine(ex.Message); ModelState.AddModelError("", "Invalid login attempt."); return View(model); } return RedirectToLocal(returnUrl); // This doesn't count login failures towards account lockout // To enable password failures to trigger account lockout, change to shouldLockout: true /* var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false); 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("", "Invalid login attempt."); return View(model); } */ }
public async Task<ActionResult> Login(LoginViewModel model, string returnUrl) { if (!ModelState.IsValid) { return View(model); } // This doesn't count login failures towards account lockout // To enable password failures to trigger account lockout, change to shouldLockout: true var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false); 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("", "Invalid login attempt."); return View(model); } }