Example #1
0
        public async Task <string> DeleteClientAsync(string client_uid, string user_uid)
        {
            var msg = SUCCESS;

            await this._AuthTokenRepository.PrepareSessionAsync(async db =>
            {
                var token_query     = db.Set <AuthToken>();
                var token_to_delete = await token_query.Where(x => x.ClientUID == client_uid && x.UserUID == user_uid).ToListAsync();
                if (!ValidateHelper.IsPlumpList(token_to_delete))
                {
                    return(true);
                }
                var token_list = token_to_delete.Select(x => x.UID).ToList();

                token_query.RemoveRange(token_to_delete);

                var scope_map_query = db.Set <AuthTokenScope>();
                scope_map_query.RemoveRange(scope_map_query.Where(x => token_list.Contains(x.TokenUID)));

                if (await db.SaveChangesAsync() <= 0)
                {
                    msg = "删除token失败";
                }

                foreach (var token in token_list)
                {
                    this._cache.Remove(AuthCacheKeyManager.TokenKey(token));
                }

                return(true);
            });

            return(msg);
        }
        public async Task <_ <LoginUserInfo> > FindUserByTokenAsync(string access_token, string client_id)
        {
            var data = new _ <LoginUserInfo>();

            if (!ValidateHelper.IsAllPlumpString(access_token, client_id))
            {
                data.SetErrorMsg("参数为空");
                return(data);
            }

            var hit_status   = CacheHitStatusEnum.Hit;
            var cache_expire = TimeSpan.FromMinutes(5);

            var cache_key = AuthCacheKeyManager.TokenKey(access_token);

            //查找token
            var token = await this._cache.GetOrSetAsync(cache_key, async() =>
            {
                hit_status = CacheHitStatusEnum.NotHit;

                return(await this._IAuthTokenService.FindTokenAsync(client_id, access_token));
            }, cache_expire);

            var Actor = ActorsManager <CacheHitLogActor> .Instance.DefaultClient;

            //统计缓存命中
            Actor?.Tell(new CacheHitLog(cache_key, hit_status));

            if (token == null)
            {
                data.SetErrorMsg("token不存在");
                return(data);
            }

            hit_status = CacheHitStatusEnum.Hit;
            cache_key  = AuthCacheKeyManager.UserInfoKey(token.UserUID);
            //查找用户
            var loginuser = await this._cache.GetOrSetAsync(cache_key, async() =>
            {
                hit_status = CacheHitStatusEnum.NotHit;

                var user = await this._IAuthLoginService.GetUserInfoByUID(token.UserUID);
                return(user);
            }, cache_expire);

            //统计缓存命中
            Actor?.Tell(new CacheHitLog(cache_key, hit_status));

            if (loginuser == null)
            {
                data.SetErrorMsg("用户不存在");
                return(data);
            }

            loginuser.LoginToken   = token.UID;
            loginuser.RefreshToken = token.RefreshToken;
            loginuser.TokenExpire  = token.ExpiryTime;
            loginuser.Scopes       = token.Scopes?.Select(x => x.Name).ToList();

            data.SetSuccessData(loginuser);

            return(data);
        }
Example #3
0
 public void HandleEvent(EntityUpdated <AuthClient> eventMessage)
 {
     this._cache.Remove(AuthCacheKeyManager.ClientKey(eventMessage.Entity?.UID));
 }
Example #4
0
 public void HandleEvent(EntityUpdated <AuthScope> eventMessage)
 {
     this._cache.Remove(AuthCacheKeyManager.ScopeAllKey());
     this._cache.Remove(AuthCacheKeyManager.ScopeKey(eventMessage.Entity?.UID));
 }
Example #5
0
 public void HandleEvent(EntityDeleted <AuthToken> eventMessage)
 {
     this._cache.Remove(AuthCacheKeyManager.TokenKey(eventMessage.Entity?.UID));
 }