过滤器作用
- 作用于mvc中
- 可在mvc之前、之后添加业务逻辑
- 可以到处复用,避免代码重复
过滤器的执行流程

异常过滤器只能捕获模型绑定、动作过滤器、动作执行的异常
过滤器的种类
| 过滤器 | 继承接口(同步、异步) | 调用 | 说明 |
| 授权过滤器 | IAuthorizationFilter、IAsyncAuthorizationFilte | OnAuthorization | 请求时进行授权,只调用一次 |
| 资源过滤器 | IResourceFilter、IAsyncResourceFilter |
OnResourceExecuting OnResourceExecuted |
请求时调用 返回时调用 |
| 异常过滤器 | IExceptionFilter、IAsyncExceptionFilter | OnException | 捕获模型绑定、动作过滤器、动作执行的异常,有异常时执行一次 |
| 动作滤器 | IActionFilter、IAsyncActionFilter |
OnActionExecuting OnActionExecuted |
请求时调用 返回时调用 |
| 结果过滤器 | IResultFilter、IAsyncResultFilter |
OnResultExecuting OnResultExecuted |
请求时调用 返回时调用 |
使用
同步版本

异步版本
过滤器的应用
作用于全局
public void ConfigureServices(IServiceCollection services) { services.AddControllersWithViews(options => { //options.Filters.Add(new MyResourceFilter()); //options.Filters.Add(typeof(MyResourceFilter)); options.Filters.Add<MyResourceFilter>(); }); }
作用于Controller
作用于Action
//只需要在Controller和Action上添加就行 [MyResourceFilter]