使用username在缓存中生成Key

时间:2016-10-28 18:03:03

标签: c# .net caching memcached unity-container

我有横切项目,可以在aplicattion的任何地方访问 这样的事情。

//Domain\username     
public static string GetLoggedUserName()
        {
            return Thread.CurrentPrincipal.Identity.Name.Split('\\')[1];
        }

当我需要清理缓存(更新,删除等)时,我会这样做。

private IMethodReturn ApplyCleanCacheHandler(IMethodInvocation input, GetNextInterceptionBehaviorDelegate getNext)
    {
        var methodClass = input.MethodBase.DeclaringType.Name;
        var sessionUserName = SomeSessionClass.GetLoggedUserName();

        var cacheKeysToClean = GlobalCachingProvider.GetAllCacheKeys()
                                                    .Where(x => x.Contains(methodClass) &&
                                                               (x.Contains(GlobalCachingProvider.commonCacheUser) || 
                                                                x.Contains(sessionUserName))).ToList();

        cacheKeysToClean.ForEach(key => GlobalCachingProvider.RemoveItem(key));

        // Original target invoking.
        return getNext()(input, getNext);
    }

无论如何要做得更好,我不知道在一个应用程序的任何地方是否可以访问用户名。

0 个答案:

没有答案