【问题标题】:ASP.NET Core 5 add action filter with parameterASP.NET Core 5 添加带有参数的操作过滤器
【发布时间】:2022-01-21 14:50:14
【问题描述】:

尝试将身份验证过滤器添加到 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` 参数。

任何帮助表示赞赏。

【问题讨论】:

    标签: asp.net-core .net-core action-filter


    【解决方案1】:

    你不需要使用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")]时,你可以得到过滤器中的值

    【讨论】:

    • 谢谢。似乎完成了这项工作
    最近更新 更多