Beispiel #1
0
        private async Task <bool> CheckMembershipAsync(string memberId, string tenantId, int?level)
        {
            var isMember = false;
            var cacheKey = $"member-{memberId}-tenant-{tenantId}";
            var value    = await _cache.GetStringAsync(cacheKey);

            var entryExists = value != null;

            if (entryExists)
            {
                bool.TryParse(value, out isMember);
                return(isMember);
            }
            // This is the case that cache is unavalable or this is the first authorization call for this requirement/policy.
            isMember = await _tenantStore.CheckAccessAsync(tenantId, memberId, level);

            // Add to cache.
            var cacheEntryOptions = new DistributedCacheEntryOptions().SetSlidingExpiration(TimeSpan.FromMinutes(5));
            await _cache.SetStringAsync(cacheKey, $"{isMember}", cacheEntryOptions);

            return(isMember);
        }