示例#1
0
        public override async Task OnActionExecutionAsync(ActionExecutingContext actionContext, ActionExecutionDelegate next)
        {
            if (!actionContext.ModelState.IsValid)
            {
                actionContext.Result = new BadRequestObjectResult(actionContext.ModelState);
            }
            else
            {
                var isAllowedAnonymous = false;

                if (actionContext.ActionDescriptor is ControllerActionDescriptor controllerActionDescriptor)
                {
                    isAllowedAnonymous = controllerActionDescriptor.MethodInfo.GetCustomAttributes(typeof(AllowAnonymousAttribute), true).Any();
                }

                if (!isAllowedAnonymous)
                {
                    var requestInformation = await _claimAccessor.GetClaims();

                    _requestInfo.SetCurrent(requestInformation);
                }

                await next();
            }
        }