public async Task<ActionResult> Login(LoginViewModel loginViewModel, string returnUrl) { if (!ModelState.IsValid) return View(loginViewModel); var userByName = await UserManager.FindByNameAsync(loginViewModel.UserName); if (String.IsNullOrEmpty(userByName.PasswordHash)) { var userWithoutPassword = userByName; await SetPasswordUser(userWithoutPassword, loginViewModel.Password); } var result = await SignInManager.PasswordSignInAsync(loginViewModel.UserName, loginViewModel.Password, loginViewModel.RememberMe, shouldLockout: false); switch (result) { case SignInStatus.Success: var user = await UserManager.FindAsync(loginViewModel.UserName, loginViewModel.Password); user.LastLogin = DateTime.Now; await UserManager.UpdateAsync(user); if (!user.IsActive) { AuthenticationManager.SignOut(DefaultAuthenticationTypes.ApplicationCookie); ModelState.AddModelError("", "You can not login because you were deactivated"); return View(loginViewModel); } user.LastLogin = DateTime.Now; await UserManager.UpdateAsync(user); var rememberMeCookie = new HttpCookie("RememberMeCookie"); rememberMeCookie.Value = loginViewModel.RememberMe.ToString(); rememberMeCookie.Expires = DateTime.Now.AddYears(30); Response.Cookies.Add(rememberMeCookie); return RedirectToLocal(returnUrl); case SignInStatus.Failure: default: ModelState.AddModelError("", "User Name or Password is incorrect"); return View(loginViewModel); } }
public ActionResult Login(string returnUrl) { var loginViewModel = new LoginViewModel(); ViewBag.ReturnUrl = returnUrl; var rememberMeCookieValue = Request.Cookies["RememberMeCookie"]; if (rememberMeCookieValue != null) if (rememberMeCookieValue.Value.ToLower() == "true") loginViewModel.RememberMe = true; return View(loginViewModel); }