MVC Filter
MVC Filter是典型的AOP(面向切面编程)。MVC框架支持5种不同类型的过滤器,每种类型让你能够在请求处理类型的不同点上引入逻辑。下图描述了集中过滤器类型:
不同类型的Filters
- Authorization filters – 实现
IAuthorizationFilter
特性. - Action filters – 实现
IActionFilter
特性. - Result filters – 实现
IResultFilter
特性. - Exception filters –实现
IExceptionFilter
特性.
Filters 按照上面列出的顺序执行。例如, authorization filters 总是在action filters之前执行,exception filters在所有其他类型的filter之后执行.
ActionFilterAttribute 基类
为了使你能够更加容易的实现自定义的action filter, ASP.NET MVC框架包含一个ActionFilterAttribute
基类. 这个类实现了IActionFilter
与IResultFilter
接口,并且继承了Filter
类。
ActionFilterAttribute
基类拥有以下可以重载的方法:
- OnActionExecuting在action method调用前发生。
- OnActionExecuted在action method调用后发生, 但是在result执行前发生 (在 view 呈现前)
- OnResultExecuting在result执行前发生(在view 呈现前)
- OnResultExecuted 在result执行后发生(在view 呈现后)
1.认证过滤器
认证过滤器是MVC第5版本的新特性,它对应用程序中的控制器和动作方法如何验证用户提供了细粒度的控制。
2.授权过滤器
新建类TestAuthorizeAttribute
public class TestAuthorizeAttribute:AuthorizeAttribute { public override void OnAuthorization(AuthorizationContext filterContext) { filterContext.HttpContext.Response.Write("OnAuthorization<br/>"); //注释掉父类方法,因为父类里的 OnAuthorization 方法会调用asp.net的授权验证机制! // base.OnAuthorization(filterContext); } }