protected void Application_PostAuthenticateRequest() { HttpCookie authCookie = Request.Cookies[FormsAuthentication.FormsCookieName]; if (authCookie != null) { FormsAuthenticationTicket authTicket = FormsAuthentication.Decrypt(authCookie.Value); DrCleanCarePrincipalSerializeModel serializeModel = JsonConvert.DeserializeObject <DrCleanCarePrincipalSerializeModel>(authTicket.UserData); DrCleanCarePrinciple newUser = new DrCleanCarePrinciple(authTicket.Name); newUser.UserId = serializeModel.UserId; newUser.FirstName = serializeModel.FirstName; newUser.LastName = serializeModel.LastName; newUser.Roles = serializeModel.Roles; HttpContext.Current.User = newUser; } }
public ActionResult Login(LoginViewModel model) { /* * User submitted login info */ try { // validate login info if (ModelState.IsValid == false) { ModelState.AddModelError("", "Thông tin đăng nhập không hợp lệ"); return(View(model)); } // get current user info User userInfo = db.Users .Where(u => u.Username.Equals(model.UserName.Trim(), StringComparison.OrdinalIgnoreCase)) .FirstOrDefault(); if (userInfo == null) { ModelState.AddModelError("", "Đăng nhập thất bại!<p />Tên tài khoản/mật khẩu không đúng"); return(View(model)); } // verify user name and password bool loginSuccess = SaltedHash.Verify(userInfo.Salt, userInfo.Password, model.Password); if (loginSuccess) { // save authentication info DrCleanCarePrincipalSerializeModel principal = new DrCleanCarePrincipalSerializeModel(); principal.UserId = userInfo.UserId; principal.FirstName = userInfo.FirstName; principal.LastName = userInfo.LastName; principal.Roles = userInfo.Roles.Select(r => r.RoleName).ToArray(); string principalJson = JsonConvert.SerializeObject(principal); FormsAuthenticationTicket ticket = new FormsAuthenticationTicket( 1, userInfo.Username, DateTime.Now, DateTime.Now.AddHours(168), // 7 days model.RememberMe, principalJson); string encTicket = FormsAuthentication.Encrypt(ticket); HttpCookie faCookie = new HttpCookie(FormsAuthentication.FormsCookieName, encTicket); Response.Cookies.Add(faCookie); return(RedirectToAction("Index", "Admin")); } else { ModelState.AddModelError(string.Empty, "Đăng nhập thất bại!<p />Tên tài khoản/mật khẩu không đúng"); return(View(model)); } } catch (ArgumentException ex) { ModelState.AddModelError(string.Empty, ex.Message); return(View(model)); } catch (NotImplementedException ex) { ModelState.AddModelError(string.Empty, ex.Message); return(View(model)); } }