过滤器:
过滤器(filter):是基于AOP(面向接口编程)的设计,它的作用是对MVC框架处理客户端请求注入额外的逻辑。
本质:就是实现一个特定接口或者父类的特殊类。
使用时,不会影响主逻辑,可以额外添加效果(如用户登录权限)
需要时就就根据所需添加作用域,不需要时直接删掉就可以了,非常直接方便
过滤器的作用域:
2 全局过滤器
所有控制器都受到限制:
在App_Start文件的FilterConfig类中添加全局过滤器
2 控制器级别过滤器
个别控制器受到限制:
像这样,[过滤器名称] 的形式写到相应的控制器
2 action级别过滤器
限制到某个action
备注:[AllowAnonymous] 可以用这个方式来跳过Authorization过滤器
过滤器的分类:
此表格是按运行优先级排列,Excption过滤器除外
BaseController(控制器)可以和过滤器同时存在且优先级于过滤器
(控制器本身也是一个过滤器)
过滤器类型 | 接口 | 描述 |
Authorization | IAuthorizationFilter | 最早运行的过滤器,在其他过滤器与action之前 |
Action | IActionFilter | 在action之前和之后运行 |
Result | IResultFilter | actionResult之前和之后运行 |
Excption | IExceptionFilter | 在抛出错误时运行 |
过滤器的优先级:
2 本身存在优先级
2 设置优先级
ü 改变参数
如图所示,参数越小越优先运行,若是同级,则按顺序运行
ü 改变参数
通过order设置
[过滤器名称(order=数值)]
数值越小,优先运行,若是同级,则按顺序运行