IActionFilter和IAuthorizationFilter之间的区别

我只是想知道IActionFilterIAuthorizationFilter之间是否有任何区别?

我假设我们可以在IActionFilterIActionFilter可能具有IAuthorizationFilter的相同逻辑……这是真的吗?

谢谢!

根据问题,是的,我们可以在IActionFilterIAuthorizationFilter实现相同的逻辑。 但唯一的执行顺序不同。

ASP.NET MVC框架支持四种不同类型的filter:

  Authorization – Implements IAuthorizationFilter Attribute. Action – Implements IActionFilter Attribute. Result – Implements IResultFilter Attribute. Exception – Implements IExceptionFilter Attribute. 

注意: filter按上面列出的顺序执行。

在操作filter和exceptionfilter总是在每种其他类型的filter之后执行之前,始终执行授权过滤 filter

Authorizationfilter用于实现控制器操作的authenticationauthorization 。 例如,授权filter是授权filter的示例。

操作filter包含在执行控制器操作之前和之后执行的逻辑。 例如,您可以使用操作filter来修改控制器操作返回的视图数据。

Resultfilter包含在执行视图结果之前和之后执行的逻辑。 例如,您可能希望在将视图呈现给浏览器之前修改视图结果。

Exceptionfilter是要运行的最后一种filter。 您可以使用exceptionfilter来处理由控制器操作或控制器操作结果引发的错误。 您还可以使用exceptionfilter来记录错误。

每种不同类型的filter以特定顺序执行。 如果要控制执行相同类型的filter的顺序,则可以设置filter的Order属性。

注意: 所有操作筛选器的基类是System.Web.Mvc.FilterAttribute类。

授权filter在操作管道中很早就运行。 例如,当条件不满足时,它们可以逃离动作管道。 (使用它的示例MVC框架属性是[Authorize],[RequireHttps])

操作filter在授权filter之后执行,它可以参与操作的前后处理。

是的,您可以使用操作筛选器实现身份validation筛选器。 从这里 :

您可以使用操作筛选器进行日志记录,身份validation,输出缓存或其他任务。

我担心我不知道为什么除了IAuthorizationFilter之外还存在差异,它是一个简单的接口,它的一个方法,它的上下文也有更少的属性。