/// <summary>Generates a key.</summary> /// <param name="accessToken">The access token.</param> /// <returns>The key.</returns> protected string GenerateKey(RedisAccessToken accessToken) { return this.Configuration.AccessTokenPrefix + ":" + accessToken.Id; }
/// <summary> /// Gets all access tokens that expires **after** the specified date. Called when authenticating /// an access token to limit the number of tokens to go through when validating the hash. /// </summary> /// <param name="expires">The expire date.</param> /// <returns>The access tokens.</returns> public async Task<IEnumerable<IAccessToken>> GetAccessTokens(DateTime expires) { var db = this.GetDatabase(); var min = expires.ToUnixTime(); var tokens = new List<IAccessToken>(); var keys = db.SortedSetRangeByScore(this.Configuration.AccessTokenPrefix, min, DateTimeMax); foreach (var key in keys) { var hashedId = key.ToString().Substring(this.Configuration.AccessTokenPrefix.Length + 1); var hashEntries = await db.HashGetAllAsync(key.ToString()); if (hashEntries.Any()) { var token = new RedisAccessToken(hashEntries) { Id = hashedId }; tokens.Add(token); } } return tokens; }