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;
}
}
}


浙公网安备 33010602011771号