四种Filter和自定义Filter
在 ASP.Net MVC 中提供了四个 Filter(过滤器)接口实现了这种 AOP 机制: IAuthorizationFilter、IActionFilter、IResultFilter、IExceptionFilter。
1)IAuthorizationFilter 一般用来检查当前用户是否有 Action 的执行权限,在每个 Action 被 执行前执行 OnAuthorization 方法;
2)IActionFilter 也是在每个 Action 被执行前执行 OnActionExecuting 方法,每个 Action 执行 完成后执行 OnActionExecuted 方法。和 IAuthorizationFilter 的区别是 IAuthorizationFilter 在 IActionFilter 之前执行,检查权限一般写到 IAuthorizationFilter 中;
3)IResultFilter,在 每个 ActionResult 的前后执行 IResultFilter。用的很少,后面有一个应用。
4)IExceptionFilter,当 Action 执行发生未处理异常的时候执行 OnException 方法。在 ASP.net MVC 中仍然可以使用“Global 的 Application_Error”,但是建议用 IExceptionFilter。
定义的类可以在Global中GlobalFilters.Filters.Add(new XXXFilter());的方式添加为全局的 过滤器。
、(*)非全局 Filter:只要让实现类继承自 FilterAttribute 类,然后该实现哪个 Filter 接口就 实现哪个(四个都支持)。不添加到 GlobalFilters 中,而是把这个自定义 Attribute 添加到 Controller 类上这样就只有这个 Controller 中操作会用到这个 Filter。如果添加到 Action 方法 上,则只有这个 Action 执行的时候才会用到这个 Filter。

浙公网安备 33010602011771号