Exemple #1
0
        /// <summary>
        /// 获取用户身价
        /// </summary>
        /// <param name="SessionKey">用户标示</param>
        /// <param name="contentType">用户终端</param>
        /// <returns></returns>
        public virtual UMC.Security.Principal Authorization(string SessionKey, String contentType)
        {
            var sessionKey = Data.Utility.Guid(SessionKey, true).Value;

            if (sessionKey != Guid.Empty)
            {
                var session = new Configuration.Session <Security.AccessToken>(sessionKey.ToString());
                if (session.Value != null)
                {
                    var auth = session.Value;
                    auth.Id          = sessionKey;
                    auth.ContentType = session.ContentType;

                    var passDate = Data.Utility.TimeSpan();
                    if (auth.Timeout == 0 || (auth.ActiveTime + auth.Timeout > passDate))
                    {
                        if (auth.ActiveTime < passDate - 600)
                        {
                            Data.Reflection.SetProperty(auth, "ActiveTime", passDate);

                            this.Activation(auth);
                        }

                        return(UMC.Security.Principal.Create(auth.Identity(), auth));
                    }
                }
                var user = UMC.Security.Identity.Create(sessionKey, "?", String.Empty);
                return(UMC.Security.Principal.Create(user, Security.AccessToken.Create(user, sessionKey, contentType, 0)));
            }
            var id = UMC.Security.Identity.Create("?", String.Empty);

            return(UMC.Security.Principal.Create(id, Security.AccessToken.Create(id, Guid.Empty, contentType, 0)));
        }
Exemple #2
0
        /// <summary>
        /// 获取用户身价
        /// </summary>
        /// <param name="SessionKey">用户标示</param>
        /// <param name="contentType">用户终端</param>
        /// <returns></returns>
        public virtual UMC.Security.Principal Authorization(Guid SessionKey, String contentType)
        {
            if (SessionKey != Guid.Empty)
            {
                var session = new Configuration.Session <Security.AccessToken>(SessionKey.ToString(), false);
                if (session.Value != null)
                {
                    var auth = session.Value;
                    auth.Id          = SessionKey;
                    auth.ContentType = session.ContentType;
                    return(Authorization(auth, auth.Identity()));
                }
                var user = UMC.Security.Identity.Create(SessionKey, "?", String.Empty);
                return(UMC.Security.Principal.Create(user, Security.AccessToken.Create(user, SessionKey, contentType, 0)));
            }
            var id = UMC.Security.Identity.Create("?", String.Empty);

            return(UMC.Security.Principal.Create(id, Security.AccessToken.Create(id, Guid.Empty, contentType, 0)));
        }
Exemple #3
0
        /// <summary>
        /// 登录
        /// </summary>
        /// <param name="Id"></param>
        /// <param name="tmpId"></param>
        /// <param name="contentType"></param>
        /// <param name="unqiue"></param>
        /// <returns></returns>
        public static AccessToken Login(Identity Id, Guid tmpId, string contentType, bool unqiue)
        {
            if (unqiue)
            {
                var token = Create(Id, tmpId, contentType, 0);

                var sesion = new Configuration.Session <UMC.Security.AccessToken>(token, token.Id.ToString());

                sesion.ContentType = contentType;

                sesion.Commit(Id, contentType);

                UMC.Security.Principal.Create(Id, token);
                return(token);
            }
            else
            {
                return(Login(Id, tmpId, 30, contentType));
            }
        }
Exemple #4
0
        /// <summary>
        /// 登录
        /// </summary>
        /// <param name="user">身份</param>
        /// <param name="deviceId">设备Id</param>
        /// <param name="timeout">过期时间</param>
        /// <param name="deviceType">设置类型</param>
        /// <param name="unqiue">记录登录</param>
        /// <returns></returns>
        public static AccessToken Login(Identity user, Guid deviceId, int timeout, string deviceType, bool unqiue)
        {
            if (unqiue)
            {
                var token = Create(user, deviceId, deviceType, timeout);

                var sesion = new Configuration.Session <UMC.Security.AccessToken>(token, token.Id.ToString());

                sesion.ContentType = deviceType;

                sesion.Commit(user, deviceType);

                UMC.Security.Principal.Create(user, token);
                return(token);
            }
            else
            {
                return(Login(user, deviceId, timeout, deviceType));
            }
        }
Exemple #5
0
        public virtual void Activation(Security.AccessToken token)
        {
            int cuttime = UMC.Data.Utility.TimeSpan();

            if (token.Timeout > 0 && ((token.ActiveTime ?? 0) + token.Timeout) < cuttime)
            {
                var at     = AccessToken.Create(UMC.Security.Identity.Create(token.Id.Value, "?", "Guest"), token.Id.Value, token.ContentType, 0);
                var sesion = new Configuration.Session <UMC.Security.AccessToken>(at, token.Id.ToString());
                sesion.ContentType = at.ContentType;
                sesion.Commit(token.Id.Value);
                return;
            }


            switch (token.Username ?? "?")
            {
            case "#":
            case "?":
                break;

            default:
                if (String.IsNullOrEmpty(token.Username) == false)
                {
                    UMC.Data.Database.Instance().ObjectEntity <UMC.Data.Entities.User>()
                    .Where.And(new UMC.Data.Entities.User {
                        Username = token.Username
                    }).Entities
                    .Update(new UMC.Data.Entities.User {
                        ActiveTime = DateTime.Now, SessionKey = token.Id.Value
                    });
                }
                break;
            }
            if (token.UId.HasValue)
            {
                var sesion = new Configuration.Session <UMC.Security.AccessToken>(token, token.Id.ToString());
                sesion.ContentType = token.ContentType;
                sesion.Commit(token.UId.Value);
            }
        }
Exemple #6
0
        public override void Activation(Security.AccessToken token)
        {
            var sesion = new Configuration.Session <UMC.Security.AccessToken>(token, token.Id.ToString());

            sesion.ContentType = token.ContentType;

            switch (token.Username ?? "?")
            {
            case "?":
                if (token.SId.HasValue)
                {
                    sesion.Commit(Guid.Empty, token.SId ?? Guid.Empty);
                }
                else
                {
                    sesion.Commit(Guid.Empty, token.Id ?? Guid.Empty);
                }
                break;

            case "#":
                sesion.Commit(Guid.Empty, token.Identity().Id ?? Guid.Empty);
                break;

            default:
                sesion.Commit(Guid.Empty, token.Identity().Id ?? Guid.Empty);

                UMC.Data.Database.Instance().ObjectEntity <UMC.Data.Entities.User>()
                .Where.And(new UMC.Data.Entities.User {
                    Username = token.Username
                }).Entities
                .Update(new User {
                    ActiveTime = DateTime.Now, SessionKey = token.Id.Value
                });
                break;
            }
        }