前言

书承接上文,咱们上回说到,.net core中各种日志框架, 今天我讲讲.net core中的内置过滤器吧!

1.什么是过滤器?

ASP.NET Core中的筛选器允许代码在请求处理管道中的特定阶段之前或之后运行,从用户发送一个请求,到控制器处理完,在返回给用户,在这个过程,请求会经历多个中间件,所谓的过滤器,就是在请求过程中,拦截请求,对请求进行处理,例如:权限认证,异常处理等等。如下图所示:

2.过滤器的分类

  • Authorization过滤器:这个在所有的过滤器中最先运行,主要功能是检测当前用户是否权限访问,如果没有权限就直接短路(终止请求,返回HTTP:401),不会先下执行。这里需要特别注意一下,因为授权过滤器是最先执行,如果它有异常需要小心处理,因为它不会向下执行,所以不会到Exception过滤器,这点需要注意。
  • Resource过滤器:这个过滤器是紧跟着Authorization过滤器后面的过滤器,OnResourceExecuting在模型绑定之前运行代码,在管道的其余部分完成之后,OnResourceExecuted运行代码。
  • Action过滤器:在调用动作方法之前和之后立即运行代码,可以监控并修改传递给操作的参数,同时也能监控并修改返回的结果。(微软说在Razor Pages不支持这个过滤器)
  • Exception过滤器:将全局策略应用于在写入响应主体之前发生的未处理异常,监听全局的异常处理。
  • Result过滤器:在执行操作结果之前和之后立即运行代码,紧跟着Action过滤器,对action返回的结果可以进行数据格式转换。

2.1过滤器的执行顺序:



Authorization-->Resource-->Action-->Exception-->Result

2.2客户端发送一个请求到服务端的过程

3.默认执行顺序

先是执行全局,再到控制器,最后到具体的方法,然后返回到控制器,最后到全局。这里说的执行顺序,是过滤器在不同作用域的执行顺序。

4.为什么要使用过滤器?

过滤器的分类我己经介绍完毕,想必大家对过滤器有初步的了解,知道它是什么,能做哪些事,你肯定会有疑问,我们为什么要使用过滤器?

答:当我们客户端向服务端发送请求的时候,如果此时我需要验证用户是否登录,如果不使用过滤器的方式去验证,那在我们每一个发送请求之前,我们都需要去服务端认证当前是否有用户登录,当前的用户是否拥有访问权限,这样需要把同一份验证代码,反复复制,这不仅会增加工作量,一旦有新需求,改动很麻烦,如果使用过滤器去认证,这样只需要修改服务端的代码,就可以达到一劳永逸,即使以后有修改,只需要修改服务端的逻辑即可。

5.总结

至此,我们已经了解过滤器是什么(what),为什么需要使用过滤器(why),过滤器在什么时候用(when),接下来几篇就开始讲讲如何使用(how)。

.net core中的哪些过滤器的更多相关文章

  1. 文章翻译:ABP如何在EF core中添加数据过滤器

    原文地址:https://aspnetboilerplate.com/Pages/Documents/Articles%5CHow-To%5Cadd-custom-data-filter-ef-cor ...

  2. 第十五节:Asp.Net Core中的各种过滤器(授权、资源、操作、结果、异常)

    一. 简介 1. 说明 提到过滤器,通常是指请求处理管道中特定阶段之前或之后的代码,可以处理:授权.响应缓存(对请求管道进行短路,以便返回缓存的响应). 防盗链.本地化国际化等,过滤器用于横向处理业务 ...

  3. .net core中的哪些过滤器 (Authorization篇)

    前言 咱们上篇说到,过滤的简单介绍,但是未介绍如何使用,接下来几篇,我来给大家讲讲如何使用,今天第一篇是Authorization.认证过滤器, 开发环境介绍 开发工具:VS2019 开发环境:.ne ...

  4. ASP.NET Core中使用自定义MVC过滤器属性的依赖注入

    除了将自己的中间件添加到ASP.NET MVC Core应用程序管道之外,您还可以使用自定义MVC过滤器属性来控制响应,并有选择地将它们应用于整个控制器或控制器操作. ASP.NET Core中常用的 ...

  5. 如何在ASP.NET Core中编写高效的控制器

    ​通过遵循最佳实践,可以编写更好的控制器.所谓的"瘦"控制器(指代码更少.职责更少的控制器)更容易阅读和维护.而且,一旦你的控制器很瘦,可能就不需要对它们进行太多测试了.相反,你可 ...

  6. [转]ASP.NET Core 中文文档 第四章 MVC(4.3)过滤器

    本文转自:http://www.cnblogs.com/dotNETCoreSG/p/aspnetcore-4_4_3-filters.html 原文:Filters 作者:Steve Smith 翻 ...

  7. ASP.NET Core 中文文档 第四章 MVC(4.3)过滤器

    原文:Filters 作者:Steve Smith 翻译:刘怡(AlexLEWIS) 校对:何镇汐 ASP.NET MVC 过滤器 可在执行管道的前后特定阶段执行代码.过滤器可以配置为全局有效.仅对控 ...

  8. ASP.NET Core中的ActionFilter与DI

    一.简介 前几篇文章都是讲ASP.NET Core MVC中的依赖注入(DI)与扩展点的,也许大家都发现在ASP.NET CORE中所有的组件都是通过依赖注入来扩展的,而且面向一组功能就会有一组接口或 ...

  9. 避免在ASP.NET Core中使用服务定位器模式

    (此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 题记:服务定位器(Service Locator)作为一种反模式,一般情况下应该避免使用,在 ...

随机推荐

  1. Android使用Mono c#分段列表视图

    下载source code - 21.7 KB 你想知道如何把多个ListView控件放到一个布局中,但是让它们在显示时表现正确吗 多个列表项?你对它们正确滚动有问题吗?这个例子将向你展示如何组合单独 ...

  2. DM9000裸机驱动程序设计

    对于任何一个硬件模块的设计,首先第一步都是要先了解硬件本身后,再开始程序的软件设计.而由于DM9000的芯片文档内容很多,要驱动好网卡,需要很长时间,特别对于新手比较困难,所以可以参考linux内核代 ...

  3. 多测师讲解第一个月 _综合面试题_高级讲师肖sir

    第一个月综合面试题 1.  冒烟测试是什么意思?  对主要的用例测试 2.你们公司的项目流程是什么? 3.你们公司的bug分几个级别?  4个 4.你对外键是怎么理解的? 你会使用外键吗?给一个表添加 ...

  4. 多测师讲解性能测试_面试题_001高级讲师肖sir

    什么叫做性能测试?1. 软件的性能是软件的一种非功能特性,它关注的不是软件是否能够完成特定的功能,所以一般来说性能测试介入的时机是在功能测试完成之后.另外,由定义中的及时性可知性能也是一种指标,可以 ...

  5. bootStrap小结1

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. 习题3-3 数数字(Digit Counting , ACM/ICPC Danang 2007, UVa1225)

    #include<stdio.h> #include<string.h> int main() { char s[100]; scanf("%s",s); ...

  7. swoft 使用协程 初试

    控制器访问 /hi /** * @Swoft\Bean\Annotation\Mapping\Inject("UserService") * @var UserService */ ...

  8. centos8:linux平台查看线程(ps/pstree/top)

    一,ps/pstree/top命令所属的rpm包 pstree所属的包 [root@blog ~]# whereis pstree pstree: /usr/bin/pstree /usr/bin/p ...

  9. Vue企业级优雅实战05-框架开发01-登录界面

    预览本文的实现效果: # gitee git clone git@gitee.com:cloudyly/dscloudy-admin-single.git # github git clone git ...

  10. 如何将vscode代码快速同步到github/gitee上

    用git实现源代码管理几乎是程序员的必备操作,下面是简单实现流程: 在vscode打开代码所在文件夹 在左侧栏点击源代码管理 初始化存储库 添加远程存储库 输入远程仓库地址(没有仓库的要先建个仓) 输 ...