过滤器作用
- 作用于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]