1.过滤器
过滤器运行在MVC Action Invocation Pipeline(MVC Action 请求管道),我们称它为Filter Pipleline(过滤器管道),Filter Pipleline 运行在MVC选择Action执行前,因此我们可以在Action执行前做一些处理,例如:权限。
请求顺序如图:
2.过滤器类型
每个过滤器在Filter Pipleline的不同阶段执行。
- Authorization filters(权限过滤器) Authorzation filters 在Filter Pipleline中首先运行,并用于决定当前用户是否有请求权限。如果没有请求权限直接返回。
- Resource filters(资源过滤器) Resource filters 在Authorzation后面运行,同时在后面的其它过滤器完成后还会执行。Resource filters 实现缓存或其它性能原因返回。因为它运行在模型绑定前,所以这里的操作都会影响模型绑定。
- Action filters(方法过滤器) Action filters会在执行Action方法前后被调用。这个可以在方法中用来处理传递参数和处理方法返回结果。
- Exception filters(异常过滤器) Exception filters 被应用全局策略处理未处理的异常发生前任何被写入响应体。
- Result filters(结果过滤器) Result filters 可以在执行Action结果之前执行,且执行Action成功后执行,使用逻辑必须围绕view或格式化执行结果。
下图是过滤器管道的先后执行顺序:
Demo:https://github.com/a764578566/MyFilters
大家可以下载Demo,自己在代码断点上面执行两次 一次请求是action正常 一次请求是action异常
参考文档:https://docs.microsoft.com/en-us/aspnet/core/mvc/controllers/filters
上面是个人翻译即一些理解,比较初级,对这个还会写一些,如果有错误欢迎指正
时间: 2024-10-11 01:48:04