ASP.NET Core 中的筛选器、过滤器

一、过滤器

通过使用 ASP.NET Core 中的筛选器,可在请求处理管道中的特定阶段之前或之后运行代码。

内置筛选器处理任务,例如:

  • 授权(防止用户访问未获授权的资源)。
  • 响应缓存(对请求管道进行短路出路,以便返回缓存的响应)。

可以创建自定义筛选器,用于处理横切关注点。 横切关注点的示例包括错误处理、缓存、配置、授权和日志记录。 筛选器可以避免复制代码。 例如,错误处理异常筛选器可以合并错误处理。

本文档适用于 Razor Pages、API 控制器和具有视图的控制器。 筛选器不能直接用于 组件。 筛选器只能在以下情况下间接影响组件:

  • 该组件嵌入在页面或视图中。
  • 页面或控制器和视图使用此筛选器。

 

二、筛选器工作原理

 

 

 

三、筛选器的类型

每种筛选器类型都在筛选器管道中的不同阶段执行:

  • 授权筛选器:

    • 首先运行。
    • 确定用户是否获得请求授权。
    • 如果请求未获授权,可以让管道短路。
  • 资源筛选器

    • 授权后运行。
    • OnResourceExecuting 在筛选器管道的其余阶段之前运行代码。 例如,OnResourceExecuting 在模型绑定之前运行代码。
    • OnResourceExecuted 在管道的其余阶段完成之后运行代码。
  • 操作筛选器

    • 在调用操作方法之前和之后立即运行。
    • 可以更改传递到操作中的参数。
    • 可以更改从操作返回的结果。
    • 不可在 Pages 中使用。
  • 异常筛选器在向响应正文写入任何内容之前,对未经处理的异常应用全局策略。

  • 结果筛选器

    • 在执行操作结果之前和之后立即运行。
    • 仅当操作方法成功执行时才会运行。
    • 对于必须围绕视图或格式化程序的执行的逻辑,会很有用。

 

 

 网址:https://docs.microsoft.com/zh-cn/aspnet/core/mvc/controllers/filters?view=aspnetcore-6.0

posted on 2022-03-27 23:39  topguntopgun  阅读(251)  评论(0编辑  收藏  举报

导航