.NET core中的筛选器

作者:微信公众号:【架构师老卢】
6-5 16:3
44

概述:筛选器是每个 .NET API 的组成部分。在这篇文章中,我旨在深入研究 .NET Core 中可访问的各种类型的筛选器。向 ASP.NET API 发起请求时,您的请求在到达目标控制器之前会经过一系列中间件和过滤器。ASP.NET core MVC 和最小 API近年来,从 ASP.NET MVC 到最小 API 的过渡仍在继续,请务必注意,最小 API 框架可能不支持某些筛选器。但可以想象的是,MVC 管道中的其他筛选器将来可能会在最小 API 中使用。ASP.NET Core 中的过滤器筛选器是可以应用于控制器、操作或全局应用于整个应用程序的属性或类。它们提供了一种将预处理和后处理逻辑添

筛选器是每个 .NET API 的组成部分。在这篇文章中,我旨在深入研究 .NET Core 中可访问的各种类型的筛选器。

向 ASP.NET API 发起请求时,您的请求在到达目标控制器之前会经过一系列中间件和过滤器。

ASP.NET core MVC 和最小 API

近年来,从 ASP.NET MVC 到最小 API 的过渡仍在继续,请务必注意,最小 API 框架可能不支持某些筛选器。

但可以想象的是,MVC 管道中的其他筛选器将来可能会在最小 API 中使用。

ASP.NET Core 中的过滤器

筛选器是可以应用于控制器、操作或全局应用于整个应用程序的属性或类。它们提供了一种将预处理和后处理逻辑添加到控制器操作方法的方法的方法。

在 .NET Core 中,有许多内置筛选器,包括授权筛选器、操作筛选器、异常筛选器和资源筛选器。

需要了解的一个重要方面是过滤器的顺序。当您向控制器发送请求时,某些中间件可能会拦截您的请求并执行某些操作。中间件执行后,我们进入过滤器流水线区域。

过滤器管道

执行顺序取决于过滤器类型;当您接近要调用的控制器时,每种类型都会变得更加具体。当然,您可以根据要执行的任务的粒度添加或覆盖任何类型的筛选器。

这里列出了所有过滤器类型,按执行顺序排序:

  1. 授权过滤器: 用于验证用户是否有权访问特定控制器。(在 ASP.NET MVC 和最小 API 中均可用)
  2. 资源筛选器: 在身份验证筛选器之后运行。执行包装了大部分筛选器管道。(仅在 ASP.NET MVC 中可用)
  3. 操作过滤器: 它们的执行围绕着操作方法的执行,对于实现跨领域关注点(如日志记录)很有用。(仅在 ASP.NET MVC 中可用)
  4. 终结点筛选器: 用于偶然传入或传出操作的参数或结果(仅在最小 API 中可用)
  5. 异常筛选器: 异常筛选器用于处理在执行操作方法期间发生的异常。仅当引发未经处理的异常时,它们才会运行。(仅在 ASP.NET MVC 中可用)
  6. 结果筛选器: 结果筛选器在执行操作方法之前和之后运行,但它们专门处理操作返回的结果。(仅在 ASP.NET MVC 中可用)

以下是管道过滤器流的表示:

授权筛选器

.NET 中的授权筛选器用于验证用户是否有权访问特定控制器。

它们是管道中触发的初始筛选器,通常在实现基于令牌的授权流时使用。

如果要修改 .NET 提供的此默认机制,可以重写默认授权筛选器并合并自定义逻辑。

在一篇文章中,我深入研究了自定义此机制的过程:

资源筛选器

资源筛选器在执行身份验证筛选器后立即执行其逻辑,并封装大多数其他筛选器。由于它们在模型绑定步骤之前运行,因此这些筛选器的一个有用应用是影响模型绑定。

这些筛选器的其他用途包括日志记录、缓存和限制管理。

资源筛选器是 ASP.NET Core MVC 管道的组成部分,截至目前,它与最小 API 不兼容。

操作过滤器

操作筛选器 操作筛选器用于在执行操作方法之前或之后执行某些特定任务。这些筛选器可以添加到不同的范围级别:全局、操作、控制器。

操作筛选器是 ASP.NET Core MVC 管道的一部分,不适用于(至少在撰写本文时)最小 API。对于最小 API 项目,应使用终结点筛选器。

终结点筛选器

终结点筛选器与操作筛选器在同一级别运行,并且仅通过最小 API 提供。它们封装了一组终结点。从经典 ASP.NET MVC 的角度来看,它们的功能类似于充当控制器过滤器的过滤器。

异常筛选器

异常过滤器用于管理请求处理过程中出现的异常。它们可以通过属性分配给控制器或操作方法。

关于异常筛选器的要点:

  • 他们擅长在操作中捕获异常。
  • 但是,它们缺乏错误处理中间件的多功能性。

尽管如此,建议尽可能使用中间件进行异常处理。应将异常筛选器保留给错误处理因调用的特定操作方法而异的情况。

异常筛选器是 ASP.NET Core MVC 管道的组成部分,截至目前,它与最小 API 不兼容。使用最小 API 时,建议使用中间件来处理异常。

结果筛选器

结果筛选器是一种特殊类型的筛选器,在执行操作方法之后,但在处理结果并将其传输到客户端之前运行。从本质上讲,它们在执行操作结果之前和之后都起作用。

结果筛选器提供了在执行操作结果之前或执行结束后执行逻辑的机会,同时仍然在响应到达客户端之前拦截响应。

它们的实用程序涵盖各种方案,包括:

  • 缓存响应。
  • 修改结果。
  • 将 HTTP 标头添加到响应中。

源代码获取:公众号回复消息【code:59416

相关代码下载地址
重要提示!:取消关注公众号后将无法再启用回复功能,不支持解封!
第一步:微信扫码关键公众号“架构师老卢”
第二步:在公众号聊天框发送code:59416,如:code:59416 获取下载地址
第三步:恭喜你,快去下载你想要的资源吧
阅读排行