.net core中的哪些过滤器
前言
书承接上文,咱们上回说到,.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中的哪些过滤器的更多相关文章
- 文章翻译:ABP如何在EF core中添加数据过滤器
原文地址:https://aspnetboilerplate.com/Pages/Documents/Articles%5CHow-To%5Cadd-custom-data-filter-ef-cor ...
- 第十五节:Asp.Net Core中的各种过滤器(授权、资源、操作、结果、异常)
一. 简介 1. 说明 提到过滤器,通常是指请求处理管道中特定阶段之前或之后的代码,可以处理:授权.响应缓存(对请求管道进行短路,以便返回缓存的响应). 防盗链.本地化国际化等,过滤器用于横向处理业务 ...
- .net core中的哪些过滤器 (Authorization篇)
前言 咱们上篇说到,过滤的简单介绍,但是未介绍如何使用,接下来几篇,我来给大家讲讲如何使用,今天第一篇是Authorization.认证过滤器, 开发环境介绍 开发工具:VS2019 开发环境:.ne ...
- ASP.NET Core中使用自定义MVC过滤器属性的依赖注入
除了将自己的中间件添加到ASP.NET MVC Core应用程序管道之外,您还可以使用自定义MVC过滤器属性来控制响应,并有选择地将它们应用于整个控制器或控制器操作. ASP.NET Core中常用的 ...
- 如何在ASP.NET Core中编写高效的控制器
通过遵循最佳实践,可以编写更好的控制器.所谓的"瘦"控制器(指代码更少.职责更少的控制器)更容易阅读和维护.而且,一旦你的控制器很瘦,可能就不需要对它们进行太多测试了.相反,你可 ...
- [转]ASP.NET Core 中文文档 第四章 MVC(4.3)过滤器
本文转自:http://www.cnblogs.com/dotNETCoreSG/p/aspnetcore-4_4_3-filters.html 原文:Filters 作者:Steve Smith 翻 ...
- ASP.NET Core 中文文档 第四章 MVC(4.3)过滤器
原文:Filters 作者:Steve Smith 翻译:刘怡(AlexLEWIS) 校对:何镇汐 ASP.NET MVC 过滤器 可在执行管道的前后特定阶段执行代码.过滤器可以配置为全局有效.仅对控 ...
- ASP.NET Core中的ActionFilter与DI
一.简介 前几篇文章都是讲ASP.NET Core MVC中的依赖注入(DI)与扩展点的,也许大家都发现在ASP.NET CORE中所有的组件都是通过依赖注入来扩展的,而且面向一组功能就会有一组接口或 ...
- 避免在ASP.NET Core中使用服务定位器模式
(此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 题记:服务定位器(Service Locator)作为一种反模式,一般情况下应该避免使用,在 ...
随机推荐
- ansible-playbook简介
1. ansible-playbook简介 • Playbooks 与 adhoc 相比,是一种完全不同的运用 ansible 的方式,是非常之强大的. • 简单来说,playbooks 是一种简单的 ...
- 【dos】wmic命令
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 磁盘 查看硬盘信息:wmic diskdrive 查看逻辑盘信息:wmic l ...
- c++的一些习惯
1.显示转换:类型说明符(表达式),如a = int(z) 2.枚举类型enum:专门用来解决对数据的合法性检查问题,如一星期七天,如果用int/char等数据类型描述时,则需要对数据的合法性检查.声 ...
- 利用babel工具将es6语法转换成es5,Object.assign方法报错
一.新建工程初始化项目 1.新建工程文件夹这里起名叫做es6,然后在里面创建两个文件夹分别为src .dist如下图:(src为待转换es6 js存放目录,dist为编译完成后的es5 js存放目录) ...
- 习题3-5 谜题(Puzzle, ACM/ICPC World Finals 1993, UVa227)
#include<stdio.h> #include<string.h> char s[5][5]; int main() { while(gets(s[0])) { int ...
- Jmeter入门(4)- 注意事项
一.中文乱码问题的解决方法 1. 将HTTP请求的内容编码改成UTF-8 2. 修改配置文件jmeter.properties 将jmeter安装目录的bin目录下的jmeter.properties ...
- linux mkfifo命令基本用法
首先了解linux命令执行顺序 通常情况下,终端只能执行一条命令,然后按下回车,那么执行多条命令呢 顺序执行多条命令,可以用分号; cmd1;cmd2;cmd3 条件执行多条命令,使用&&am ...
- G1摘要
G1 启动参数示例 -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m -XX:+PrintTenuringDistribution -XX:+UseG1 ...
- zookeeper Cli的常用命令
zookeeper Cli的常用命令 服务管理 启动ZK服务: zkServer.sh start 查看ZK状态: zkServer.sh status 停止ZK服务: zkServer.sh sto ...
- 单片机串口通信电平不匹配的解决电路,5V 3.3V串口通讯
很早的时候调试串口通讯遇到单片机和模块电压不匹配,信号无法传输,所以整理后来遇到的转换电路.1.最简单的用转换电平IC,可以去淘宝上搜索,有四路的有两路的,比如这个双向电平转换模块 2.根据接触的开发 ...
