.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)作为一种反模式,一般情况下应该避免使用,在 ...
随机推荐
- [Java 开源项目]一款无需写任何代码,即可一键生成前后端代码的工具
作者:HelloGitHub-小鱼干 JeecgBoot 是一款基于代码生成器的低代码开发平台,零代码开发.JeecgBoot 采用开发模式:Online Coding 模式-> 代码生成器模式 ...
- React踩坑笔记 —— React
Webpack提供了自己的导入方式require.include,但同时也支持commonjs规范或AMD规范的require语法,而Node.js使用的就是common.js,ES6的语法Impor ...
- API可视化管理平台YApi
Yapi是什么 YApi 是高效.易用.功能强大的 api 管理平台,旨在为开发.产品.测试人员提供更优雅的接口管理服务.可以帮助开发者轻松创建.发布.维护 API,YApi 还为用户提供了优秀的交互 ...
- Azure Media Player Logo隐藏和 视频字幕样式
<style type="text/css"> /**hide mediaplayer logo*/ .amp-default-skin .amp-content-ti ...
- Hello World -- 第一篇博客 -- 活着的意义
今年注定是不寻常的一年,因为技术,接触了许多大牛.通过一篇篇博文,看到了大牛们勤奋好学.孜孜不倦的精神,于是决定也开个博客,向大牛学习. 博客开了,写点什么呢?奈何肚子里墨水不多,吐出来也多是白沫,不 ...
- 为什么说switch比if快
C++的switch语法 在C++中,switch只接受整型常量作为分支的值: switch (expr) { case integral-constant : \\... break; case i ...
- allure测试报告
首先如果你没有安装 pytest 库的话,先使用 pip 安装一下: pip install pytest 另外还需要安装 pytest 支持 allure 报告的插件库: pip install a ...
- git学习(七) git的标签
git的标签操作 git标签操作 git tag 不加任何参数 表示显示标签(按字母序) 非按时间 git tag 标签名 默认是给最近一次提交打上标签 git tag 标签名 commitId 给响 ...
- 【CF1436C】Binary Search 题解
原题链接 题意简介 要求有多少种 n 的排列,能够通过二分法正确地找到放在 pos 处的数字 x. 答案对 1e9+7 取模.n<=1000. 采用的二分法如下图: 思路分析 首先,这个排列中有 ...
- 文献管理软件 Zotero 安装、配置与使用
简介 Zotero优缺点 使用Zotero作为主力文献管理工具的原因: 软件本身完全免费并且开源,不存在盗版问题 注册后本身只包括 300M 空间同步,但支持 WebDAV 同步,例如 Dropbox ...
