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); }
public void HandleEvent(EntityUpdated <AuthClient> eventMessage) { this._cache.Remove(AuthCacheKeyManager.ClientKey(eventMessage.Entity?.UID)); }
public void HandleEvent(EntityUpdated <AuthScope> eventMessage) { this._cache.Remove(AuthCacheKeyManager.ScopeAllKey()); this._cache.Remove(AuthCacheKeyManager.ScopeKey(eventMessage.Entity?.UID)); }
public void HandleEvent(EntityDeleted <AuthToken> eventMessage) { this._cache.Remove(AuthCacheKeyManager.TokenKey(eventMessage.Entity?.UID)); }