public void CreateAuthenticationTicket(Users user, HttpResponseBase response, HttpContextBase httpContextBase, bool remember) { var serializeModel = GetModel(user); var userGroup = user.UserGroup; UserRep.AddUserCache(serializeModel); var expiration = remember ? DateTime.Now.AddYears(1) : DateTime.Now.AddMinutes(FormsAuthentication.Timeout.TotalMinutes); string userData = $"{user.GId}|{UserRep.GetIP()}|{userGroup}"; var authTicket = new FormsAuthenticationTicket( 1, user.GId.ToString(), DateTime.Now, expiration, remember, userData); string encTicket = FormsAuthentication.Encrypt(authTicket); CookieUtils.AddCookie(GetCookieName(), encTicket, expiration); setPrinciple(serializeModel, userGroup); }
public void FromAuthenticationTicket(HttpCookie cookie) { FormsAuthenticationTicket authTicket = FormsAuthentication.Decrypt(cookie.Value); if (authTicket == null) { return; } var userData = authTicket.UserData; var userDataArr = userData.Split('|'); if (userDataArr.Length != 3 || UserRep.GetIP() != userDataArr[1]) { FormsAuthentication.SignOut(); return; } if (FormsAuthentication.SlidingExpiration) { var expiration = DateTime.Now.AddMinutes(FormsAuthentication.Timeout.TotalMinutes); cookie.Expires = expiration; cookie.HttpOnly = true; HttpContext.Current.Response.Cookies.Set(cookie); } var userGid = userDataArr[0]; var userGroup = (UserGroup)Enum.Parse(typeof(UserGroup), userDataArr[2]); ISysUserModel serializeModel = UserRep.GetByCache(userGid); if (serializeModel == null) { var user = UserRep.GetByGid(userGid); if (user == null) { UserRep.RemoveUserCache(userGid); FormsAuthentication.SignOut(); return; } serializeModel = GetModel(user); UserRep.AddUserCache(serializeModel); } setPrinciple(serializeModel, userGroup); }