HTML5技术

Asp.Net MVC学习总结(三)——过滤器你怎么看? - SeeYouBug

字号+ 作者:H5之家 来源:H5之家 2017-03-06 17:01 我要评论( )

一、过滤器简介1.1、理解什么是过滤器 1、过滤器(Filters)就是向请求处理管道中注入额外的逻辑。提供了一个简单而优雅的方式来实现横切关注点。 2、所谓的过滤器(Filters),MVC框架里面的过滤器完全不同于ASP.NET平台里面的Request.Filters和Response.Fil

 一、过滤器简介 1.1、理解什么是过滤器

1、过滤器(Filters)就是向请求处理管道中注入额外的逻辑。提供了一个简单而优雅的方式来实现横切关注点。

2、所谓的过滤器(Filters),MVC框架里面的过滤器完全不同于ASP.NET平台里面的Request.Filters和Response.Filter对象,它们主要是实现请求和响应流的传输。通常我们所说的过滤器是指MVC框架里面的过滤器。

3、过滤器可以注入一些代码逻辑到请求处理管道中,是基于C#的Attribute的实现。当负责调用Action的类ControllerActionInvoker在调用执行Action的时候会检查Action上面的Attribute并查看这些Attribute是否实现了指定的接口,以便进行额外的代码注入处理

1.2、理解为什么要使用过滤器

假设你做了一个小项目,其中某个功能是操作管理用户信息模块,有这样一个需求,对用户信息管理必须是已通过认证的用户才能操作,我们可以在每一个Action方法里面检查认证请求,如下所示:

1 using MvcFilterDmo.Core; 2 using System; 3 using System.Collections.Generic; 4 using System.Linq; 5 using System.Web; 6 using System.Web.Mvc; 7 using System.Web.Security; MvcFilterDmo.Controllers 10 { HomeController : Controller 12 { 13 public ActionResult Index() 14 { 15 if (!Request.IsAuthenticated) 16 { 17 FormsAuthentication.RedirectToLoginPage(); 18 } View(); 21 } 22 public ActionResult Insert() 23 { 24 if (!Request.IsAuthenticated) 25 { 26 FormsAuthentication.RedirectToLoginPage(); 27 } View(); 30 } 31 public ActionResult Update() 32 { 33 if (!Request.IsAuthenticated) 34 { 35 FormsAuthentication.RedirectToLoginPage(); 36 } View(); 39 } 40 public ActionResult Delete() 41 { 42 if (!Request.IsAuthenticated) 43 { 44 FormsAuthentication.RedirectToLoginPage(); 45 } View(); 48 } 49 //其他Action操作方法 } 52 }

通过上面的代码,可以发现使用这种方式检查请求认证有许多重复的地方,这也就是为什么要使用过滤器的原因,使用过滤器可以实现相同的效果。如下所示:

1 using MvcFilterDmo.Core; 2 using System; 3 using System.Collections.Generic; 4 using System.Linq; 5 using System.Web; 6 using System.Web.Mvc; 7 using System.Web.Security; MvcFilterDmo.Controllers 10 { 11 [Authorize] HomeController : Controller 13 { 14 public ActionResult Index() 15 { View(); 18 } 19 public ActionResult Insert() 20 { View(); 23 } 24 public ActionResult Edit() 25 { View(); 28 } 29 public ActionResult Delete() 30 { View(); 33 } 34 //其他Action操作方法 } 37 }

过滤器是.NET里面的特性(Attributes),它提供了添加到请求处理管道的额外方法。这里使用Authorize过滤器可以实现同样的效果,不过代码就显然比之前更加简洁优雅。

二、过滤器的使用 2.1、基本类型的过滤器

过滤器实现的机制:在MVC框架调用一个Action之前,它会检查方法的定义中是否实现了特性(Attributes),如果实现的话,那么在请求处理管道适当的位置,该特性定义的方法会被调用。

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • ASP.NET Core MVC上传、导入、导出知多少 - Jeffcky

    ASP.NET Core MVC上传、导入、导出知多少 - Jeffcky

    2017-03-02 18:01

  • HTML5标签学习笔记 - 就只是小茗

    HTML5标签学习笔记 - 就只是小茗

    2017-02-28 11:00

  • 小白学习H5从入门到放弃 - strength小宝

    小白学习H5从入门到放弃 - strength小宝

    2017-02-27 16:01

  • 跨专业学习编程的苦逼生活 QWQ嘤嘤嘤(第一周) - 天冷吃冰棍儿

    跨专业学习编程的苦逼生活 QWQ嘤嘤嘤(第一周) - 天冷吃冰棍儿

    2017-02-27 15:01

网友点评
$