ASP.NET Core 5 添加带有参数的操作过滤器
Posted
技术标签:
【中文标题】ASP.NET Core 5 添加带有参数的操作过滤器【英文标题】:ASP.NET Core 5 add action filter with parameter 【发布时间】: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` 参数。
任何帮助表示赞赏。
【问题讨论】:
【参考方案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")]
时,你可以得到过滤器中的值
【讨论】:
谢谢。似乎完成了这项工作以上是关于ASP.NET Core 5 添加带有参数的操作过滤器的主要内容,如果未能解决你的问题,请参考以下文章
如何仅为 ASP.NET 5 (ASP.NET Core) 中的受保护操作添加令牌验证
如何在 ASP.NET Core 5 中使用 AuthenticationBuild.AddJwtBearer() 执行 JWT 颁发者验证时添加参数
我无法在 asp.net core spas 中添加带有角度 cli 的新组件
ASP .NET Core 2 控制器操作的 AJAX 参数
在 ASP.Net 5 / Core 中启用跨域资源共享 (CORS)
带有 EF Core 和 CosmosDB .NET 5 的 ASP.Net Core - IdentityRole 问题