public override void OnActionExecuting(ActionExecutingContext filterContext) { IUserCacheService userCacheService = filterContext.HttpContext.RequestServices.GetService <IUserCacheService>(); var userId = filterContext.HttpContext.User.Identity.Name; if (userId == null) { filterContext.Result = new UnauthorizedResult(); } else { var userPair = userCacheService.GetUsersRolePair(userId); foreach (var userFeatureAccess in _filters) { if (userPair.HasAccessToFeature(userFeatureAccess)) { base.OnActionExecuting(filterContext); return; } } filterContext.Result = new UnauthorizedResult(); } }