ASP.NET Core 5 添加带参数的动作过滤器

ASP.NET Core 5 add action filter with parameter

正在尝试向 ASP.NET Core 5 MVC 操作方法添加身份验证过滤器并传递参数。但是我无法找到一种方法来做到这一点。这是动作过滤器代码:

public class CheckUserPrivilege : IActionFilter
{
        private readonly IHttpContextAccessor _httpContextAccessor;
        private readonly ISession _session;
        public string PrivilegeCode { get; set; }

        public CheckUserPrivilledge(IHttpContextAccessor httpContextAccessor)
        {
            _httpContextAccessor = httpContextAccessor;
            _session = _httpContextAccessor.HttpContext.Session;
        }
}

我们需要传递的参数是PrivilegeCode。理想情况下想要像 [CheckUserPrivilege("abc")] 这样的东西,但是当我们这样尝试时,我认为它还会在构造函数中请求 IHttpContextAccessor 参数。

感谢任何帮助。

不需要使用IHttpContextAccessor获取参数,只需要使用下面的代码即可:

public class CheckUserFilter : Attribute,IActionFilter
    {
        
        private readonly string PrivilegeCode;
        public CheckUserFilter(string _PrivilegeCode)
        {
            PrivilegeCode = _PrivilegeCode;
        }
        public void OnActionExecuted(ActionExecutedContext context)
        {
            //........
        }

        public void OnActionExecuting(ActionExecutingContext context)
        {
            //If you want to do somthing about context,
           // you just need to use`context.HttpContext.....`

            
        }
    }

当你尝试 [CheckUserPrivilege("abc")] 时,你可以得到过滤器中的值