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);
        }
  • 相关阅读:
    java架构解密——实时动态aop
    guice基本使用,配置模块的两种方式(三)
    guice基本使用,三种注入方式(二)
    guice的基本使用(一)
    Java 集合系列10之 HashMap详细介绍(源码解析)和使用示例
    java泛型(二)、泛型的内部原理:类型擦除以及类型擦除带来的问题
    java泛型(一)、泛型的基本介绍和使用
    java泛型学习(2)
    jquery,从后台查数据,给页面上添加树形。
    Java Annotation认知(包括框架图、详细介绍、示例说明)
  • 原文地址:https://www.cnblogs.com/dragon-L/p/5277708.html
Copyright © 2011-2022 走看看