public void FromAuthenticationTicket(HttpCookie cookie)
        {
            FormsAuthenticationTicket authTicket = FormsAuthentication.Decrypt(cookie.Value);

            if (authTicket == null)
            {
                return;
            }
            var userGid        = authTicket.UserData;
            var serializeModel = Cache.Get <SysUserModel>(userGid);

            if (serializeModel == null)
            {
                var user = UserRep.GetByGid(userGid).Result;
                if (user == null)
                {
                    Cache.Remove(userGid);
                    FormsAuthentication.SignOut();
                    return;
                }
                serializeModel = GetModel(user);

                Cache.Add(user.GId.ToString(), serializeModel, CacheTime);
            }

            var userPrincipal = new SysUser(serializeModel);

            HttpContext.Current.User = userPrincipal;
            Thread.CurrentPrincipal  = userPrincipal;
        }
Пример #2
0
        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);
        }