.net core mvc/webapi 过滤器(FilterAttribute)依赖注入方式

.NET Core MVC与WebAPI权限及验证

在.net core MVC和 .net core webapi 项目中,通常需要加入过滤器FilterAttribute来处理一些接口权限、参数验证的问题。在过滤器我们需要用到系统已经注入的插件(类)等。过滤器的Controller中的方法上标注就会提示我们没有零个参数的构造器。怎么处理这个问题呢?

第一步:注入筛选器

public void ConfigureServices(IServiceCollection services)
{ 
            //注入筛选器
            services.AddScoped<ApiActionFilterAttribute>();
}

ApiActionFilterAttribute 为自定义的 ActionFilterAttribute ,继承于ActionFilterAttribute,【其它过滤器亦可以这样搞】

第二步:方法上添加标注


        [ServiceFilter(typeof(ApiActionFilterAttribute))]

我这里利用了微软已提供 的 ServiceFilter 这个服务。

 

第三步:使用已注册的组件(插件、类)

 public class ApiActionFilterAttribute : ActionFilterAttribute
 {
        private readonly ILogger<ApiActionFilterAttribute> _logger; 
        public ApiActionFilterAttribute(Microsoft.Extensions.Options.IOptions<ILogger<ApiActionFilterAttribute> logger)
        { 
            _logger = logger;
        }
        public override void OnActionExecuting(ActionExecutingContext actionContext)
        {
            _logger.LogInformation(Newtonsoft.Json.JsonConvert.SerializeObject(actionContext.HttpContext.Request.Headers));
        }
}

我这里的ILogger 组件已经注入了,在这儿就可以使用该组件了。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值