public override async Task <ApplicationUser> FindByIdAsync(string userId) { var cacheKey = CacheKey.With(GetType(), nameof(FindByIdAsync), userId); var result = await _memoryCache.GetOrCreateExclusiveAsync(cacheKey, async (cacheEntry) => { var user = await base.FindByIdAsync(userId); if (user != null) { await LoadUserDetailsAsync(user); cacheEntry.AddExpirationToken(SecurityCacheRegion.CreateChangeTokenForUser(user)); } return(user); }, cacheNullValue : false); return(result); }
public override async Task <ApplicationUser> FindByLoginAsync(string loginProvider, string providerKey) { var cacheKey = CacheKey.With(GetType(), "FindByLoginAsync", loginProvider, providerKey); var result = await _memoryCache.GetOrCreateExclusiveAsync(cacheKey, async (cacheEntry) => { var user = await base.FindByLoginAsync(loginProvider, providerKey); if (user != null) { await LoadUserRolesAsync(user); cacheEntry.AddExpirationToken(SecurityCacheRegion.CreateChangeTokenForUser(user)); } return(user); }, cacheNullValue : false); return(result); }