根据问题,是的,我们可以在两者中实现相同的逻辑IActionFilter
and IAuthorizationFilter
。但唯一的执行顺序不同。
ASP.NET MVC 框架支持四种不同类型的过滤器:
Authorization – Implements IAuthorizationFilter Attribute.
Action – Implements IActionFilter Attribute.
Result – Implements IResultFilter Attribute.
Exception – Implements IExceptionFilter Attribute.
Note: 过滤器按照上面列出的顺序执行。
授权过滤器始终在操作过滤器之前执行并且异常过滤器总是在所有其他类型的之后执行filter
.
Authorization
过滤器用于实现authentication
and authorization
用于控制器操作。例如,授权过滤器是授权过滤器的一个示例。
操作过滤器包含在控制器操作执行之前和之后执行的逻辑。例如,您可以使用操作过滤器来修改控制器操作返回的视图数据。
Result
过滤器包含在执行视图结果之前和之后执行的逻辑。例如,您可能希望在视图呈现到浏览器之前修改视图结果。
Exception
过滤器是最后运行的过滤器类型。您可以使用异常过滤器来处理由控制器操作或控制器操作结果引发的错误。您还可以使用异常过滤器来记录错误。
每种不同类型的过滤器都按特定顺序执行。如果您想控制相同类型过滤器的执行顺序,则可以设置过滤器的 Order 属性。
Note: 所有动作过滤器的基类是System.Web.Mvc.FilterAttribute
class.