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")]
时,你可以得到过滤器中的值
正在尝试向 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")]
时,你可以得到过滤器中的值