public static string CreateFromStrategy(PolicyResultCacheStrategy strategy, ISecurityPolicy securityPolicy, ISecurityContext context)
        {
            var policyCacheKey = BuildPolicyCacheKey(strategy, securityPolicy, context);
            var cacheKey       = BuildCacheKey(strategy, policyCacheKey);

            return(cacheKey);
        }
        private static string BuildPolicyCacheKey(PolicyResultCacheStrategy strategy, ISecurityPolicy securityPolicy, ISecurityContext context)
        {
            var customPolicyCacheKey = String.Empty;

            var cacheKeyProvider = securityPolicy as ICacheKeyProvider;

            if (cacheKeyProvider != null)
            {
                customPolicyCacheKey = cacheKeyProvider.Get(context);
                if (customPolicyCacheKey != null)
                {
                    while (customPolicyCacheKey.StartsWith(" ") || customPolicyCacheKey.EndsWith(" "))
                    {
                        customPolicyCacheKey = customPolicyCacheKey.Trim();
                    }

                    if (!String.IsNullOrWhiteSpace(customPolicyCacheKey))
                    {
                        customPolicyCacheKey = String.Concat(Separator, customPolicyCacheKey);
                    }
                }
            }

            return(String.Concat(strategy.PolicyType.FullName, customPolicyCacheKey));
        }
 private static string BuildCacheKey(PolicyResultCacheStrategy strategy, string policyCacheKey)
 {
     string cacheKey;
     switch (strategy.CacheLevel)
     {
         case By.Controller:
             cacheKey = String.Concat(strategy.ControllerName, Separator, "*", Separator, policyCacheKey);
             break;
         case By.ControllerAction:
             cacheKey = String.Concat(strategy.ControllerName, Separator, strategy.ActionName, Separator, policyCacheKey);
             break;
         default: // Policy
             cacheKey = String.Concat("*", Separator, "*", Separator, policyCacheKey);
             break;
     }
     return String.Concat(typeof(PolicyResult).Name, Separator, cacheKey);
 }
        private static string BuildCacheKey(PolicyResultCacheStrategy strategy, string policyCacheKey)
        {
            string cacheKey;

            switch (strategy.CacheLevel)
            {
            case By.Controller:
                cacheKey = String.Concat(strategy.ControllerName, Separator, "*", Separator, policyCacheKey);
                break;

            case By.ControllerAction:
                cacheKey = String.Concat(strategy.ControllerName, Separator, strategy.ActionName, Separator, policyCacheKey);
                break;

            default:     // Policy
                cacheKey = String.Concat("*", Separator, "*", Separator, policyCacheKey);
                break;
            }
            return(String.Concat(typeof(PolicyResult).Name, Separator, cacheKey));
        }
        private static string BuildPolicyCacheKey(PolicyResultCacheStrategy strategy, ISecurityPolicy securityPolicy, ISecurityContext context)
        {
            var customPolicyCacheKey = String.Empty;

            var cacheKeyProvider = securityPolicy as ICacheKeyProvider;
            if (cacheKeyProvider != null)
            {
                customPolicyCacheKey = cacheKeyProvider.Get(context);
                if (customPolicyCacheKey != null)
                {
                    while (customPolicyCacheKey.StartsWith(" ") || customPolicyCacheKey.EndsWith(" "))
                        customPolicyCacheKey = customPolicyCacheKey.Trim();

                    if (!String.IsNullOrWhiteSpace(customPolicyCacheKey))
                        customPolicyCacheKey = String.Concat(Separator, customPolicyCacheKey);
                }
            }

            return String.Concat(strategy.PolicyType.FullName, customPolicyCacheKey);
        }
 public static string CreateFromStrategy(PolicyResultCacheStrategy strategy, ISecurityPolicy securityPolicy, ISecurityContext context)
 {
     var policyCacheKey = BuildPolicyCacheKey(strategy, securityPolicy, context);
     var cacheKey = BuildCacheKey(strategy, policyCacheKey);
     return cacheKey;
 }