MVC中的过滤器

来源:互联网 发布:wtybill 知乎 编辑:程序博客网 时间:2024/06/07 00:47

 

在ASP.NET MVC应用程序中,当有以下需求时,你可以使用Filter功能:

判断登录与否或用户权限、决策输出缓存、防盗链、防蜘蛛、本地化与国际化设置、实现动态Action

Filter是一种声明式编程方式,在Asp.net MVC中它只能限制于Action(或它的Controller)。

过滤器是一组.NET特性,MVC在特定运行时点调用这些特性上的指定方法,以此实现功能注入。MVC包含四个基本的过滤器类型:授权(Authorization)、活动(Action)、结果(Result)以及异常(Exception)。MVC为这四中过滤器提供了接口定义:IAuzhorizationFilter、IActionFilter、IResultFilter、IExceptionFilter,所以MVC在运行时知道如何调用过滤器上的方法。

过滤类型(Filter Type)接口(Interface)默认实现(Default Implementation)描述(Description)AuthorizationIAuthorizationFilterAuthorizeAttribute首先运行,在其他过滤器的操作方法ActionIActionFilterActionFilterAttribute运行之前和之后的动作方法ResultIResultFilterActionFilterAttribute运行前后执行的操作结果ExceptionIExceptionFilterHandleErrorAttribute如果只运行另一个过滤器, 操作方法,或行动结果抛出一个异常

如果我们要实现自定义的权限验证功能,应该从AuthorizeAttribute类继承,原因在于AuthorizeAttribute已经优化了与OutputCacheAttribute缓存过滤器的协调,避免因缓存原因造成权限验证失效的情况。

0 0