博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
过滤器
阅读量:6857 次
发布时间:2019-06-26

本文共 2796 字,大约阅读时间需要 9 分钟。

  过滤器为了把附加逻辑附加到MVC框架的请求。

一、过滤器总类

过滤器类型 接口 默认实现 描述
认证过滤器 IAuthenticationFilter N/A 最先运行,在任何其他过滤器或动作方法之前,但是在授权过滤器之后可以再次运行。
授权过滤器 IAuthorizationFilter AuthorizeAttribute 在认证后,其他过滤器或动作前,第二个运行。
动作过滤器 IActionFilter ActionFilterAttribute 在动作方法之前及之后运行
结果过滤器 IResultFilter ActionFilterAttribute 在动作结果被执行之前和之后运行
异常过滤器 IExceptionFilter HandleErrorAttribute 仅在另一个过滤器、动作方法或者动作结果抛出异常时运行。

 

二、过滤器接口分析

  认证过滤器IAuthenticationFilter,是MVC5新特性,接口定义如下:  

namespace System.Web.Mvc.Filters{    public interface IAuthenticationFilter    {        void OnAuthentication(AuthenticationContext filterContext);        void OnAuthenticationChallenge(AuthenticationChallengeContext filterContext);    }}
View Code

  

  授权过滤器IAuthorizationFilter,默认实现AuthorizeAttribute.先看IAuthorizationFilter接口定义。   

// 摘要:     //     定义授权筛选器所需的方法。    public interface IAuthorizationFilter    {        // 摘要:         //     在需要授权时调用。        //        // 参数:         //   filterContext:        //     筛选器上下文。        void OnAuthorization(AuthorizationContext filterContext);    }
View Code

  授权过滤接口只定义了OnAuthorization方法,默认实现AuthorizeAttribute可以通过Public属性Users和Roles来控制授权策略。

  

  动作过滤器IActionFilter,默认实现ActionFilterAttribute,接口定义:  

namespace System.Web.Mvc{    // 摘要:     //     定义操作筛选器中使用的方法。    public interface IActionFilter    {        // 摘要:         //     在执行操作方法后调用。        //        // 参数:         //   filterContext:        //     筛选器上下文。        void OnActionExecuted(ActionExecutedContext filterContext);        //        // 摘要:         //     在执行操作方法之前调用。        //        // 参数:         //   filterContext:        //     筛选器上下文。        void OnActionExecuting(ActionExecutingContext filterContext);    }}
View Code

  接口方法OnActionExecuting在动作执行之前调用。OnActionExecuted方法在动作执行之后调用。

 

  结果过滤器IResultFilter接口定义:

namespace System.Web.Mvc{    // 摘要:     //     定义结果筛选器所需的方法。    public interface IResultFilter    {        // 摘要:         //     在操作结果执行后调用。        //        // 参数:         //   filterContext:        //     筛选器上下文。        void OnResultExecuted(ResultExecutedContext filterContext);        //        // 摘要:         //     在操作结果执行之前调用。        //        // 参数:         //   filterContext:        //     筛选器上下文。        void OnResultExecuting(ResultExecutingContext filterContext);    }}
View Code

  接口方法OnResultExecuting在结果执行之前调用,OnResultExecuted方法在结果执行之后调用。

 

  异常过滤器IExceptionFilter,默认实现HandleErrorAttribute,接口定义如下:  

namespace System.Web.Mvc{    // 摘要:     //     定义异常筛选器所需的方法。    public interface IExceptionFilter    {        // 摘要:         //     在发生异常时调用。        //        // 参数:         //   filterContext:        //     筛选器上下文。        void OnException(ExceptionContext filterContext);    }}
View Code

  异常过滤器定义了OnException方法。异常过滤器使用后要所ExceptionHandled设置为True已处理,否则MVC框架会将异常视为未处理继续外抛。

 

转载于:https://www.cnblogs.com/bro-ma/p/7087988.html

你可能感兴趣的文章
数组去重Demo引出的思考
查看>>
javascript怎么禁用浏览器后退按钮
查看>>
Mysql字符串截取总结:left()、right()、substring()、substring_index()
查看>>
AtomicLong可以被原子地读取和写入的底层long值的操作
查看>>
Android studio 将 Module 打包成 Jar 包
查看>>
coffee script
查看>>
正则表达式大全
查看>>
SVN switch 用法详解
查看>>
Javascript文件下载顺序问题
查看>>
筛法“四不像”——《C解毒》试读
查看>>
Android应用之个人应用软件开发(3)【SQLite数据库及理财功能实现】
查看>>
Android应用之个人应用软件开发【全套程序展示及APK下载】
查看>>
你值得安装的 7 个很酷的 CyanogenMod 7 主题
查看>>
php前端控制器
查看>>
程序员第一定律:关于技能与收入
查看>>
网络通讯合并数据发送的重要性和实现原理
查看>>
Jquery getJSON 实现跨域请求 --- callback
查看>>
join sleep yield
查看>>
dd简单用法
查看>>
关于c语言的赋值和memcpy的问题
查看>>