Esempio n. 1
0
        public void Add(ServiceRequest request, ServiceIdentity identity)
        {
            string key = GetKeyString(request);

            identity.Key = key;
            //插入到全局缓存
            ResetIdentityKeyList();
            IdentityKeyList.Add(key);
            Cache.Insert <List <string> >(KeyListFlag, IdentityKeyList);
            Cache.Insert <ServiceIdentity>(key, identity,
                                           new System.Runtime.Caching.CacheItemPolicy()
            {
                SlidingExpiration = identity.Expire
            });
        }
Esempio n. 2
0
        /// <summary>
        /// 移除指定的标识
        /// </summary>
        /// <param name="identity"></param>
        /// <returns></returns>
        public bool Remove(ServiceIdentity identity)
        {
            ServiceIdentity item = this.Cache.Get <ServiceIdentity>(identity.Key);

            if (item != null && item.Key == identity.Key)
            {
                this.Cache.Remove(identity.Key);

                ResetIdentityKeyList();
                IdentityKeyList.Remove(identity.Key);//从全局缓存移除
                Cache.Insert <List <string> >(KeyListFlag, IdentityKeyList);
                return(true);
            }
            return(false);
        }
Esempio n. 3
0
        /// <summary>
        /// 获取系统中的所有服务凭据
        /// </summary>
        /// <returns></returns>
        public List <ServiceIdentity> GetAllIdentitys()
        {
            List <ServiceIdentity> list    = new List <ServiceIdentity>();
            List <string>          keyList = this.IdentityKeyList;

            foreach (string key in keyList.ToArray())
            {
                ServiceIdentity item = this.Cache.Get <ServiceIdentity>(key);
                if (item != null)
                {
                    list.Add(item);
                }
            }
            return(list);
        }
Esempio n. 4
0
        /// <summary>
        /// 根据已有的标识,寻找容器中对应的标识对象
        /// </summary>
        /// <param name="identity"></param>
        /// <returns></returns>
        public ServiceIdentity Find(ServiceIdentity identity)
        {
            List <string> keyList = this.IdentityKeyList;

            foreach (string key in keyList.ToArray())
            {
                ServiceIdentity item = this.Cache.Get <ServiceIdentity>(key);
                if (item != null)
                {
                    if (item.Id == identity.Id && item.Name == identity.Name)
                    {
                        return(item);
                    }
                }
                else
                {
                    //从全局缓存移除
                    ResetIdentityKeyList();
                    IdentityKeyList.Remove(key);
                    Cache.Insert <List <string> >(KeyListFlag, IdentityKeyList);
                }
            }
            return(null);
        }
Esempio n. 5
0
 /// <summary>
 /// 取消指定的凭据
 /// </summary>
 /// <param name="identity"></param>
 /// <returns></returns>
 public bool SignOut(ServiceIdentity identity)
 {
     return(ServiceIdentityContainer.Instance.Remove(identity));
 }
Esempio n. 6
0
 /// <summary>
 /// 根据指定的标识,查找服务标识容器是否存在对应的标识对象,如果存在,则返回容器中的标识对象
 /// </summary>
 /// <param name="identity"></param>
 /// <returns>如果未找到,返回空</returns>
 public ServiceIdentity FindIdentity(ServiceIdentity identity)
 {
     identity.Key = ServiceIdentityContainer.Instance.GetKeyString(this.currentContext.Request);
     return(ServiceIdentityContainer.Instance.Find(identity));
 }
Esempio n. 7
0
 /// <summary>
 /// (在当前会后中)设置用户凭据。(凭据保存到系统缓存中,供相同的客户机各个连接使用)
 /// </summary>
 /// <param name="user"></param>
 public void Authenticate(ServiceIdentity user)
 {
     ServiceIdentityContainer.Instance.Add(this.currentContext.Request, user);
 }