情不知从何起,一往而情深
排名
6
文章
199
粉丝
4
评论
3
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术

过滤器笔记

4656人阅读 2020/5/8 16:50 总访问:1110260 评论:0 收藏:0 手机
分类: .net

过滤器的作用范围

  • 全局过滤器
    在FilterConfig中注册的就是全局过滤器

    1. filters.Add(new LoginFilter());

    所有的控制器和action都会被限制

  • 布局过滤器
    1:控制器作用在controller,放到哪里就作用到哪里

    1. [LoginFilter]
    2. public class HomeController : Controller
    3. {
    4. }

    2:控制器作用在action(最小的限制级别)
    使用特性进行注入
    限制你要限制的部分

    1. [LoginFilter]
    2. public ActionResult Hot()
    3. {
    4. return View();
    5. }

特性
一个普通类继承Attribute就可以变成特性,特性可以作用在方法上面,实现一些功能,
比如:[httppost]限制一个action只能post访问

注意:过滤器里边的特性应该使用FilterAttribute,FilterAttributeb比普通的Attribute功能更强大一点,具有过滤器的特殊功能。它是一个拥有过滤器功能的特性

过滤器的作用限制分类

  • IActionFilter
    限制控制器执行中与执行之后执行
  • IResultFilter
    限制action返回方法执行中与执行之后执行,这个用得比较少
  • IAuthorizationFilter
    权限过滤器
  • IExceptionFilter
    出现异常的时候执行,可以做统一的异常处理

过滤器的优先级
当多个过滤器同时存在的时候,优先级的问题

IActionFilter,IResultFilter那个优先级更高一点
IActionFilter本身的执行时间节点都要比IResultFilter快一点

过滤器如果不是同类型的本来就存在一个时间节点的优先级

同级优先级:
1:默认情况下同级的谁写到前面就先执行谁
2:可以通过设置order来改变优先级,数值越小优先级越高
全局设置:

  1. filters.Add(new LoginFilter3(), 2);
  2. filters.Add(new LoginFilter(), 1);

特性设置:

  1. [LoginFilter3(Order = 6)]

欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739。有需要软件开发,或者学习软件技术的朋友可以和我联系~(Q:815170684)

评价