IActionFilter 和 IAuthorizationFilter 的区别
本文关键字:区别 IAuthorizationFilter IActionFilter | 更新日期: 2023-09-27 18:34:20
我只是想知道IActionFilter
和IAuthorizationFilter
之间是否有任何区别?
我假设我们可以在可能IAuthorizationFilter
IActionFilter
下实现相同的逻辑......这是真的吗?
谢谢!
根据问题,是的,我们可以在IActionFilter
和IAuthorizationFilter
中实现相同的逻辑。 但唯一的执行顺序不同。
ASP.NET MVC 框架支持四种不同类型的筛选器:
Authorization – Implements IAuthorizationFilter Attribute.
Action – Implements IActionFilter Attribute.
Result – Implements IResultFilter Attribute.
Exception – Implements IExceptionFilter Attribute.
注意:过滤器按上面列出的顺序执行。
授权过滤器始终在操作过滤器之前执行,异常过滤器始终在每种其他类型的filter
之后执行。
Authorization
筛选器用于实现控制器操作的authentication
和authorization
。例如,授权筛选器是授权筛选器的一个示例。
筛选器包含在控制器操作执行之前和之后执行的逻辑。例如,您可以使用操作筛选器来修改控制器操作返回的视图数据。
Result
筛选器包含在执行视图结果之前和之后执行的逻辑。例如,您可能希望在将视图呈现到浏览器之前修改视图结果。
Exception
筛选器是最后要运行的筛选器类型。您可以使用异常筛选器来处理由控制器操作或控制器操作结果引发的错误。还可以使用异常筛选器来记录错误。
每种不同类型的筛选器都按特定顺序执行。如果要控制相同类型的筛选器的执行顺序,则可以设置筛选器的 Order 属性。
注意:所有操作筛选器的基类都是System.Web.Mvc.FilterAttribute
类。
授权筛选器在操作管道中很早就运行。例如,当不满足条件时,它们非常适合从操作管道中逃逸。(使用它的示例 MVC 框架属性是 [Authorize]、[RequireHttps](
操作筛选器在授权筛选器之后执行,它可以参与操作的预处理和后处理。
您可以使用操作过滤器实现身份验证过滤器。从这里:
可以使用操作筛选器执行日志记录、身份验证、输出缓存或其他任务。
恐怕我不知道为什么存在差异,除了IAuthorizationFilter
是一个更简单的界面,它的一种方法,它在上下文上的属性也更少。