我有一个全局的AuthorizeFilter如下:
public class MyAuthorizationFilter : AuthorizeFilter {
public MyAuthorizationFilter(Authorization policy) : base(policy) { }
public override Task OnAuthorizationAsync(AuthorizationFilterContext context) { ... }
}
我在Startup.cs中做了什么:
services.AddMvc(x => {
x.Filters.Add(new MyAuthorizationFilter(new AuthorizationPolicyBuilder().RequireAuthenticateUser().Build()));
});
我也添加了服务
services.AddMemoryCache();
过滤器似乎不支持DI控制器的方式。
感谢。
答案 0 :(得分:2)
在asp.net核心中,支持依赖注入过滤器。阅读"依赖注入"在官方文档中。 Filters in ASP.Net Core
您需要实施服务过滤器或类型过滤器。
解决该服务的另一种方法是
var service = filterContext.HttpContext.RequestServices.GetService<IMemoryCache>();