zoukankan      html  css  js  c++  java
  • MVC4 4种Filter

    1. AuthorizationFilter: 从命名上看这个用于完成授权相关的工作。

      AuthorizationFilter 实现了 IAuthorizationFilter 接口, 如果我们希望执行Action之前做点什么 就用这个AuthorizationFilter 来实现。

         IAuthorizationFilter 接口提供了 OnAuthorization 方法来执行授权操作。

         

       1.1 AuthorizeAttribute: 

            [Authorize(Users = "Foo")]
            [Authorize(Roles = "Bar")]
            public ActionResult Index()
            { 
                return View();
            }

    1.2 RequitreHttpsAttribute: 从名称看可以知道 要求请求用户总是以Https 请求的方式访问目标Action。

    1.3 ValidateInputAttribute: ValidateInput用于验证请求的输入。

    2. ActionFilter:  ActionFilter 实现了接口IActionFilter  ,ActionFilter 是在我们执行Action 前后执行一些额外的操作。

        IActionFilter 具有如下两个方法。 它们分别在Action 执行前后被执行。

        我们可从  ActionExecutedContext 和 ActionExecutingContext 两个上下文对象中获取当前Action的参数列表。 

        public interface IActionFilter
        {
            void OnActionExecuted(ActionExecutedContext filterContext);
            
            void OnActionExecuting(ActionExecutingContext filterContext);
        }

    2.1 ActionFilter 的执行机制:当ActionInvoker在执行Action 的时候会根据Order和Scope属性对ActionFilter 进行排序。然后根据当前ControllerContext 和ActionDescripor 创建一个ActionExecutingContext对象,最后将其作为参数依次调用所有的ActionFitler的OnActionExecuting方法。

    ActionFilter的OnActionExecuting执行完毕后再执行Action方法,

    ActionFilter的ActionExecuted则是在Action执行完毕后再 执行。

    2.2 ActionFilter中的异常处理:

        如果ActionFilter链的第一个ActionFilter 在执行OnActionExecuting和ActionExecuted 方法过程中出现异常,那么这个异常会被直接抛出,不过不是第一个

        ActionFilter,抛出异常会被捕获。

    3 ExceptionFilter: 异常处理筛选器。 

         IExceptionFilter 具有唯一的方法OnException 用于异常处理

        1. 执行的优先级  Order 和 Scope ,排在后面的优先级更。。

        2. ExceptionContext 的 ExceptionHandled 设置ture 并不能阻止后续ExceptionFiter的执行。

        3. 如果ExceptionFilter在执行OnException过程中出现异常,整个ExceptionFilter链的执行将立即停止,并且抛出异常。

        public interface IExceptionFilter
        {
            void OnException(ExceptionContext filterContext);
        }

    4. EntLib 微软企业库 实现自动化异常处理。

    5.ResultFilter:Action方法返回一个ActionResult对象。  IResultFilter 提供了OnResultExecuted和 OnResultExecuting 两个方法,

      它们将在 ActionResult 执行前后被执行,如果Action 返回一个ActionResult对象,ActionInvoker在完成Action方法的执行后 会调用返回的ActionResult对象

      的ExecuteResult方法实习对请求的响应。

        public interface IResultFilter
        {
            void OnResultExecuted(ResultExecutedContext filterContext);
            
            void OnResultExecuting(ResultExecutingContext filterContext);
        }
  • 相关阅读:
    网易企业免费邮箱
    168. Excel Sheet Column Title
    167.Two Sum II-Input array is sorted
    166. Fraction to Recurring Decimal
    165 Compare Version Numbers
    164. Maximum Gap
    163.Missing Ranges
    162.Find Peak Element
    161.One Edit Distance
    160. Intersection of Two Linked Lists
  • 原文地址:https://www.cnblogs.com/dragon-L/p/5277708.html
Copyright © 2011-2022 走看看