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;
            }
        }
    }
复制代码
posted @ 2017-10-13 09:32  在西天取经的路上……  阅读(164)  评论(0编辑  收藏  举报