コード例 #1
0
        protected async Task StoreAsync(string key, string json, ITokenMetadata token, TimeSpan expiresIn)
        {
            var tokenKey = keyGenerator.GetKey(tokenType, key);

            if (!string.IsNullOrEmpty(token.SubjectId))
            {
                var setKey           = keyGenerator.GetSetKey(tokenType, token);
                var setKeyforSubject = keyGenerator.GetSetKey(tokenType, token.SubjectId);

                var ttlOfSet = await this.database.KeyTimeToLiveAsync(setKeyforSubject).ConfigureAwait(false);

                var transaction = this.database.CreateTransaction();
                transaction.StringSetAsync(tokenKey, json, expiresIn);
                transaction.SetAddAsync(setKey, tokenKey);
                transaction.SetAddAsync(setKeyforSubject, tokenKey);
                transaction.KeyExpireAsync(setKey, expiresIn);
                if ((ttlOfSet ?? TimeSpan.Zero) <= expiresIn)
                {
                    transaction.KeyExpireAsync(setKeyforSubject, expiresIn);
                }
                await transaction.ExecuteAsync().ConfigureAwait(false);
            }
            else
            {
                await this.database.StringSetAsync(tokenKey, json, expiresIn).ConfigureAwait(false);
            }
        }
コード例 #2
0
 internal string GetSetKey(TokenType tokenType, ITokenMetadata token) => $"{keyPrefix}{((short)tokenType).ToString()}:{token.SubjectId}:{token.ClientId}";