.NET 过滤器(Filter)

、Filter 允许在 HTTP 请求的处理管道中的特定位置,插入自定义逻辑
、Filter 一般有同步和异步两种接口,一般使用异步

好处
、主要好处是它们提供了一种将横切关注点(如日志记录、安全性、事务管理等)与业务逻辑分离的方式,从而使代码更加清晰、易于维护和重用

5种类型

、授权过滤器(Authorization Filters):用于确定用户是否有权访问资源,如果未授权,则将管道短路
、资源过滤器(Resource Filters):在模型绑定后但在方法调用之前和之后执行,通常用于处理需要短路请求的场景
、方法过滤器(Action Filters):在方法执行之前和之后执行,它可以用于处理横切关注点,如日志记录、性能监控、输入验证等。
、异常过滤器(Exception Filters):用于处理方法或过滤器中抛出的异常,它提供了一种全局处理异常的方式,允许在一个地方集中处理所有异常
、结果过滤器(Result Filters):在方法结果执行之前和之后执行,它仅在方法运行成功时执行,可以用于修改响应或执行一些需要在响应返回给客户端之前完成的逻辑

、多个类型 Filter 执行顺序:授权 -> 资源 -> 方法 -> 异常 -> 结果

3种注册方式

、全局注册(Global):对整个项目生效
、控制器注册(Controller):对控制器中的所有方法生效
、方法注册(Action):只对方法生效

、同类型多个 Filter 执行顺序:全局 -> 控制器 -> 方法


Action Filter

、在方法执行的之前和之后,会自动执行 Action Filter
、继承 IAsyncActionFilter 接口
、多个 Action Filter 的链式执行:next 方法指向下一个 Action Filter,最后一个 next 则指向 Action,然后再反向执行回来

Exception Filter

、在系统中出现未经处理的异常时,会自动执行 Exception Filter
、继承 IAsyncExceptionFilter 接口

使用步骤

、安装 NuGet 包:Microsoft.AspNetCore.Mvc.Abstractions
、创建筛选器类,继承接口
、实现接口方法,方法参数在执行时,系统会自动传入
、注册 Filter:
– 全局注册:在 Program 中注册 filter 服务,builder.Services.Configure(mopt => { mopt.Filters.Add(); });
– 控制器注册:在控制器上增加特性,[TypeFilter(typeof(MyControllerFilter))]
– 方法注册:在方法上增加特性,[TypeFilter(typeof(MyActionFilter))]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值