public string Encode(OwnerToken token) { var ownerTypeBys = NetBitConverter.GetBytes(token.OwnerType); var ownerIdBys = NetBitConverter.GetBytes(token.OwnerId); var expireTimeBys = GetBytes(token.ExpireTime); var lstLen = 1 + ownerTypeBys.Length + ownerIdBys.Length + expireTimeBys.Length; var mdatLst = new List <byte>(lstLen); mdatLst.Add(CurrentVersion); mdatLst.AddRange(ownerTypeBys); mdatLst.AddRange(ownerIdBys); mdatLst.AddRange(expireTimeBys); var mdatBys = mdatLst.ToArray(); //签名 var signBys = ArrayUtil.Addition(_appSecretBytes, mdatBys); var hashBys = Sha1(signBys); //编码成字符串 var encBys = ArrayUtil.Addition(hashBys, mdatBys); return(_urlDataCodec.Encode(encBys)); }
public override int GetHashCode() { unchecked { var hashCode = 0; hashCode = (hashCode * 397) ^ (OwnerToken?.GetHashCode() ?? 0); hashCode = (hashCode * 397) ^ (Value?.GetHashCode() ?? 0); hashCode = (hashCode * 397) ^ (ConfirmationToken?.GetHashCode() ?? 0); hashCode = (hashCode * 397) ^ (Scope?.GetHashCode() ?? 0); hashCode = (hashCode * 397) ^ (Expiration?.GetHashCode() ?? 0); return(hashCode); } }
public static bool TryDecode(this IOwnerTokenCodec codec, string tokenStr, out OwnerToken token) { try { token = codec.Decode(tokenStr); return(true); } catch { token = null; return(false); } }
public override int GetHashCode() { unchecked { var hashCode = 0; hashCode = (hashCode * 397) ^ (OwnerToken != null ? OwnerToken.GetHashCode() : 0); hashCode = (hashCode * 397) ^ (Value != null ? Value.GetHashCode() : 0); hashCode = (hashCode * 397) ^ (ConfirmationToken != null ? ConfirmationToken.GetHashCode() : 0); hashCode = (hashCode * 397) ^ (Scope != null ? Scope.GetHashCode() : 0); hashCode = (hashCode * 397) ^ (Expiration.HasValue ? Expiration.GetHashCode() : 0); return(hashCode); } }
public bool TryDecode(IOwnerTokenCodec codec, string tokenStr, out OwnerToken token) { try { token = codec.Decode(tokenStr); return(true); } catch (Exception ex) { token = null; _logger.LogTrace(ex.ToString()); return(false); } }
private bool DecodeAndCheckOwnerToken <TData>(string ownerTokenStr, out OwnerToken oToken, out DataResult <TData> errorResult) where TData : class { errorResult = null; if (!_ownerTokenCodec.TryDecode(ownerTokenStr, out oToken)) { errorResult = new DataResult <TData>(ResultErrorCodes.ArgumentBad, "bad ownerToken"); return(false); } if (oToken.IsExpired) { errorResult = new DataResult <TData>(100, "ownerToken expired"); return(false); } return(true); }
public string GenerateOwnerTokenString(int ownerType, int ownerId, TimeSpan validTime) { if (validTime.TotalSeconds < 1) { throw new ArgumentOutOfRangeException(nameof(validTime)); } var oToken = new OwnerToken { OwnerType = ownerType, OwnerId = ownerId, ExpireTime = DateTime.Now.Add(validTime) }; return(_ownerTokenCodec.Encode(oToken)); }
public Task<Token> AcquireAsync() { OwnerToken nextOwner = new OwnerToken(); Task<Token> task = nextOwner.Task; lock (this.nextOwners) { if (this.owner == null) { this.owner = nextOwner; nextOwner.Complete(); } else { this.nextOwners.Enqueue(nextOwner); } } return task; }
public async Task <IActionResult> Default() { var hcFac = RequestService.GetRequiredService <IHttpClientFactory>(); var hc = hcFac.CreateClient(); var str = await hc.GetStreamAsync("http://baidu.com/"); var ownerTokenCodec = RequestService.GetRequiredService <IOwnerTokenCodec>(); var oToken = new OwnerToken() { OwnerId = 1, OwnerType = 2, ExpireTime = DateTime.Now.AddDays(1) }; var oTokenStr = ownerTokenCodec.Encode(oToken); var oToken2 = ownerTokenCodec.Decode(oTokenStr); return(Content(DateTime.Now.ToString(CultureInfo.InvariantCulture))); }
public Task <Token> AcquireAsync() { OwnerToken nextOwner = new OwnerToken(); Task <Token> task = nextOwner.Task; lock (this.nextOwners) { if (this.owner == null) { this.owner = nextOwner; nextOwner.Complete(); } else { this.nextOwners.Enqueue(nextOwner); } } return(task); }
public void Release(Token token) { OwnerToken nextOwner = null; lock (this.nextOwners) { if (this.owner != token) { throw new InvalidOperationException("The token is not valid."); } this.owner = null; if (this.nextOwners.Count > 0) { nextOwner = this.nextOwners.Dequeue(); this.owner = nextOwner; } } if (nextOwner != null) { nextOwner.Complete(); } }
public void Release(Token token) { OwnerToken nextOwner = null; lock (this.nextOwners) { if (this.owner != token) { throw new InvalidOperationException("The token is not valid."); } this.owner = null; if (this.nextOwners.Count > 0) { nextOwner = this.nextOwners.Dequeue(); this.owner = nextOwner; } } if (nextOwner != null) { nextOwner.Complete(); } }