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) 编辑 收藏 举报