public virtual async Task <IActionResult> getLoginToken(UserToken item) { ApiResult customResult = new ApiResult(); try { if (string.IsNullOrEmpty(item.username)) { customResult.resultCode = ResultCodeEnum.InvalidParameter; customResult.resultBody = "The username is empty"; return(BadRequest(customResult)); } if (item.timestamp == null) { customResult.resultCode = ResultCodeEnum.InvalidParameter; customResult.resultBody = "The timestamp is empty"; return(BadRequest(customResult)); } if (string.IsNullOrEmpty(item.sign)) { customResult.resultCode = ResultCodeEnum.InvalidParameter; customResult.resultBody = "The sign is empty"; return(BadRequest(customResult)); } var datetime1 = DateTimeHelper.ConvertTimestampSeconds(item.timestamp.Value); var dateNow = DateTime.Now; if (datetime1 < dateNow.AddMinutes(-5) || datetime1 > dateNow.AddMinutes(5)) { customResult.resultCode = ResultCodeEnum.InvalidParameter; customResult.resultBody = "The timestamp over time"; return(BadRequest(customResult)); } var users = await _context.Set <SysUser>().Where(a => a.Name == item.username).ToArrayAsync(); if (users == null || users.Length == 0) { customResult.resultCode = ResultCodeEnum.InvalidParameter; customResult.resultBody = "username does not exist"; return(BadRequest(customResult)); } if (users.Length > 1) { customResult.resultCode = ResultCodeEnum.InvalidParameter; customResult.resultBody = "username repetition"; return(BadRequest(customResult)); } var authInfo = users.First(); if ((item.username + authInfo.Password + item.timestamp).MD5Encrypt() != item.sign) { customResult.resultCode = ResultCodeEnum.InvalidParameter; customResult.resultBody = "sign verification failed"; return(BadRequest(customResult)); } var tokenkey = await CacheHelper.GetUserTokenkeyAsync(_cache, authInfo.Id.ToString()); var token = await CacheHelper.GetTokenAsync(_cache, tokenkey); UserToken userToken = null; var AESKey = _httpOptions.TokenKey; if (string.IsNullOrEmpty(token)) { userToken = new UserToken() { userid = authInfo.Id, username = authInfo.Name, timestamp = DateTimeHelper.GetTimeStampSeconds(), }; tokenkey = userToken.tokenkey = userToken.ToString().MD5Encrypt(); token = userToken.ToString().AesEncrypt(AESKey); } else { userToken = UserToken.Parse(token.AesDecrypt(AESKey)); } //缓存信息 await CacheHelper.SetTokenAsync(_cache, tokenkey, token, _httpOptions.GetDistributedCacheEntryOptions()); await CacheHelper.SetUserTokenkeyAsync(_cache, userToken.userid.ToString(), tokenkey, _httpOptions.GetDistributedCacheEntryOptions()); customResult.resultCode = 0; customResult.resultBody = new { tokenkey = tokenkey, userid = userToken.userid, username = item.username }; var httpContext = _httpContextAccessor.HttpContext; httpContext.Response.Headers[_httpOptions.TokenName] = tokenkey; httpContext.Request.Headers[_httpOptions.TokenName] = tokenkey; return(Ok(customResult)); } catch (Exception ex) { customResult.resultCode = ResultCodeEnum.Exception; customResult.resultBody = ex.ToString(); return(BadRequest(customResult)); } }
public virtual async Task <IActionResult> getEntitys() { ApiResult customResult = new ApiResult(); try { var httpContext = _httpContextAccessor.HttpContext; var userToken = httpContext.getUserToken(); var jsonStr = await _cache.GetStringAsync("EntityBaseChildTypePropertyInfos" + userToken?.userid); if (string.IsNullOrEmpty(jsonStr)) { var childTypePropertyInfos = ClassHelper.GetChildTypePropertyInfos(typeof(EntityBase)); var result = childTypePropertyInfos.Select(x => new EntityInfo() { Name = x.Key.Name , PropertyInfos = x.Value?.Select(p => new EntitypPropertyInfo() { Name = p.Name , TypeName = p.PropertyType.HasImplementedRawGeneric(typeof(Nullable <>))? p.PropertyType.GetGenericArguments()[0].Name: p.PropertyType.Name }) }); customResult.resultBody = result; await _cache.SetAsync("EntityBaseChildTypePropertyInfos" + userToken?.userid, DataHelper.StringToBytes(JsonConvert.SerializeObject(result)), _httpOptions.GetDistributedCacheEntryOptions()); } else { customResult.resultBody = JsonConvert.DeserializeObject <IEnumerable <EntityInfo> >(jsonStr); } customResult.resultCode = 0; return(Ok(customResult)); } catch (Exception ex) { customResult.resultCode = ResultCodeEnum.Exception; customResult.resultBody = ex.ToString(); return(BadRequest(customResult)); } }