四种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。
 
 

posted @ 2017-03-16 12:31  双鱼小毅  阅读(392)  评论(0)    收藏  举报