Asp.Net MVC过滤器
2016-09-03 21:44
501 查看
在MVC中有如下过滤器
1.AuthorizeAttribute
2.ActionFilterAttribute
3.HandleErrorAttribute
一、首先介绍AuthorizeAttribute,这个就是授权过滤器
1.创建一个类,继承AuthorizeAttribute
2.重写OnAuthorization方法,在方法里面可以验证权限,如Session和Cookie
3.添加标记到方法或类上,如果在方法上添加特性,那么会在添加特性的方法执行前调用OnAuthorization方法。
如果在类上添加特性,那么在执行类中的所有方法前都会调用OnAuthorization方法。
如果要在所有控制器类的方法上都调用OnAuthorization方法,则在App_Start下的FilterConfig类下的RegisterGlobalFilters方法里面添加注册。
二、ActionFilterAttribute使用跟AuthorizeAttribute类似,执行Action前后和执行View前后过滤器
三、HandleErrorAttribute使用跟上面两个类似,异常处理过滤器
过滤器执行顺序:授权验证过滤器——执行Action前后过滤器——加载View前后过滤器
1.AuthorizeAttribute
2.ActionFilterAttribute
3.HandleErrorAttribute
一、首先介绍AuthorizeAttribute,这个就是授权过滤器
1.创建一个类,继承AuthorizeAttribute
2.重写OnAuthorization方法,在方法里面可以验证权限,如Session和Cookie
3.添加标记到方法或类上,如果在方法上添加特性,那么会在添加特性的方法执行前调用OnAuthorization方法。
如果在类上添加特性,那么在执行类中的所有方法前都会调用OnAuthorization方法。
如果要在所有控制器类的方法上都调用OnAuthorization方法,则在App_Start下的FilterConfig类下的RegisterGlobalFilters方法里面添加注册。
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; namespace 过滤器 { public class MyAuthorizeAttribute : AuthorizeAttribute { public override void OnAuthorization(AuthorizationContext filterContext) { //在此可以验证权限,如验证Session和Cookie //可以用filterContext.HttpContext.Session["Key"] 获取Session base.OnAuthorization(filterContext); } } }
二、ActionFilterAttribute使用跟AuthorizeAttribute类似,执行Action前后和执行View前后过滤器
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; namespace 过滤器 { public class MyActionFilterAttribute: ActionFilterAttribute { //加载Action前调用 public override void OnActionExecuting(ActionExecutingContext filterContext) { //在此也可以进行权限的验证 base.OnActionExecuting(filterContext); } //加载Action后调用 public override void OnActionExecuted(ActionExecutedContext filterContext) { base.OnActionExecuted(filterContext); } //加载View前调用 public override void OnResultExecuting(ResultExecutingContext filterContext) { base.OnResultExecuting(filterContext); } //加载View后调用 public override void OnResultExecuted(ResultExecutedContext filterContext) { base.OnResultExecuted(filterContext); } } }
三、HandleErrorAttribute使用跟上面两个类似,异常处理过滤器
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; namespace 过滤器 { public class MyHandleErrorAttribute: HandleErrorAttribute { public override void OnException(ExceptionContext filterContext) { Exception ex = filterContext.Exception; //获取异常 //在此可以把异常记录到日志里 //跳转到友好页面,避免把错误页显示给用户 filterContext.HttpContext.Response.Redirect("/err.html"); base.OnException(filterContext); } } }
过滤器执行顺序:授权验证过滤器——执行Action前后过滤器——加载View前后过滤器
相关文章推荐
- ASP.NET MVC 四 过滤器Filter
- ASP.NET MVC 重点教程一周年版 第六回 过滤器Filter
- ASP.NET MVC动作过滤器
- ASP.NET MVC过滤器中权限过滤器ValidateAntiForgeryToken的用法(Post-Only)
- ASP.NET MVC动作过滤器
- ASP.NET MVC 重点教程一周年版 第六回 过滤器Filter
- ASP.NET MVC : Action过滤器(Filtering)
- [转]ASP.NET MVC 过滤器Filter
- 【转】ASP.NET MVC 过滤器Filter
- Asp.net Mvc 过滤器执行顺序
- ASP.NET MVC笔记 之 Action 过滤器
- ASP.NET MVC 过滤器Filter
- ASP.NET MVC 重点教程一周年版 第六回 过滤器Filter
- ASP.NET MVC 重点教程一周年版 第六回 过滤器Filter
- asp.net mvc 过滤器:ArgumentNotNullFilter
- ASP.NET MVC 重点教程一周年版 第六回 过滤器Filter
- ASP.NET MVC 重点教程一周年版 第六回 过滤器Filter
- [翻译]ASP.NET MVC 教程 - 理解行为过滤器
- 使用过滤器过滤asp.net mvc输出内容
- 包含在ASP.NET MVC中的过滤器