首页 > 代码库 > .Net Core MVC 过滤器(一)

.Net Core MVC 过滤器(一)

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
 
上面是个人翻译即一些理解,比较初级,对这个还会写一些,如果有错误欢迎指正
 

.Net Core MVC 过滤器(一)