public async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next)
        {
            var    descriptor     = context.ActionDescriptor as ControllerActionDescriptor;
            var    actionName     = descriptor.ActionName;
            var    controllerName = descriptor.ControllerName;
            string key            = $"{controllerName}/{actionName}";
            var    t = AddIfNotExists(key);
            //// logic before action goes here
            var permission = await _currentContext.GetPermission(key);

            if (permission == null)
            {
                //context.HttpContext.Response.StatusCode = (int)HttpStatusCode.Unauthorized;
                context.Result = new ContentResult()
                {
                    Content    = "Unauthorized",
                    StatusCode = (int)HttpStatusCode.Unauthorized
                };
            }
            else
            {
                await next(); // the actual action
            }
            // logic after the action goes here
        }