mvc过滤器
AuthorizeAttribute(授权)
AuthorizeAttribute是IAuthorizationFilter的默认实现,添加了Authorize特性的Action将对用户进行验证授权,只有通过了用户才可以进入这个Action.在进入Action之前首先执行OnAuthorization
ActionFilterAttribute(自定义)
ActionFilterAttribute在mvc中没有默认实现,需要自己定义
1.OnActionExecuting在OnAuthorization之后(实际上ActionFilter中的方法都在其之后)进入Action之前执行
base.OnActionExecuting的作用:
一句话,就是调用base.OnActionExecuting(filterContext)这个后,才会执行后续的ActionFilter,如果你确定只有一个,或是不想执行后续的话,那么可以不用调用该语句。
并且,filterContext.Result = xxx;会导致转向其它视图,后续的ActionFilter也是执行不了的。
2.OnActionExecuted在Action中所有语句都执行完之后执行
3.OnResultExecuting在执行操作结果(返回继承自ActionResult的所有类型)前调用
4.OnResultExecuted在执行操作结果(返回继承自ActionResult的所有类型)后调用
HandleErrorAttribute(处理错误)
HandleErrorAttribute是IException的默认实现,在调式的时候,出现异常就会蹦出那黄色的页面
我们也可以自定义异常处理
需要注意的是ExceptionHandled表示这个异常是否已经处理(可能程序中有多个异常过滤器)
public class MyExceptionAttribute : HandleErrorAttribute { public override void OnException(ExceptionContext filterContext) { if (!filterContext.ExceptionHandled)//避免重复处理 { //获取抛出异常的对象 Exception ex = filterContext.Exception; //写入异常日志 //已处理 filterContext.ExceptionHandled = false; } } }