过滤器笔记 电脑版发表于:2020/5/8 16:50 **过滤器的作用范围** - 全局过滤器 在FilterConfig中注册的就是全局过滤器 ``` filters.Add(new LoginFilter()); ``` 所有的控制器和action都会被限制 - 布局过滤器 1:控制器作用在controller,放到哪里就作用到哪里 ``` [LoginFilter] public class HomeController : Controller { } ``` 2:控制器作用在action(最小的限制级别) 使用特性进行注入 限制你要限制的部分 ``` [LoginFilter] public ActionResult Hot() { return View(); } ``` **特性** 一个普通类继承Attribute就可以变成特性,特性可以作用在方法上面,实现一些功能, 比如:[httppost]限制一个action只能post访问 >注意:过滤器里边的特性应该使用FilterAttribute,FilterAttributeb比普通的Attribute功能更强大一点,具有过滤器的特殊功能。它是一个拥有过滤器功能的特性 **过滤器的作用限制分类** - IActionFilter 限制控制器执行中与执行之后执行 - IResultFilter 限制action返回方法执行中与执行之后执行,这个用得比较少 - IAuthorizationFilter 权限过滤器 - IExceptionFilter 出现异常的时候执行,可以做统一的异常处理 **过滤器的优先级** 当多个过滤器同时存在的时候,优先级的问题 IActionFilter,IResultFilter那个优先级更高一点 IActionFilter本身的执行时间节点都要比IResultFilter快一点 >过滤器如果不是同类型的本来就存在一个时间节点的优先级 同级优先级: 1:默认情况下同级的谁写到前面就先执行谁 2:可以通过设置order来改变优先级,数值越小优先级越高 全局设置: ``` filters.Add(new LoginFilter3(), 2); filters.Add(new LoginFilter(), 1); ``` 特性设置: ``` [LoginFilter3(Order = 6)] ```