IActionFilter和IAuthorizationFilter之间的区别

Dev*_*per 6 .net c# asp.net-mvc iauthorizationfilter

我只是想知道IActionFilter和之间是否有任何区别 IAuthorizationFilter

我假设我们可以在IActionFilter 可能的情况下实现相同的逻辑IAuthorizationFilter......这是真的吗?

谢谢!

jos*_*hua 9

作为每一个问题,是的,我们可以实现在两个相同的逻辑IActionFilterIAuthorizationFilter.但唯一的执行顺序不同.

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

    Authorization – Implements  IAuthorizationFilter Attribute.
    Action        – Implements IActionFilter Attribute.
    Result        – Implements  IResultFilter Attribute.
    Exception     – Implements  IExceptionFilter Attribute.
Run Code Online (Sandbox Code Playgroud)

注意: 过滤器按上面列出的顺序执行.

在动作过滤器和异常过滤器总是在每种其他类型之后执行之前,始终执行授权过滤器filter.

Authorization过滤器用于实现authenticationauthorization控制器操作.例如,授权过滤器是授权过滤器的示例.

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

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

Exceptionfilters是要运行的最后一种类型的过滤器.您可以使用异常过滤器来处理由控制器操作或控制器操作结果引发的错误.您还可以使用异常过滤器来记录错误.

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

注意: 所有操作过滤器的基类都是System.Web.Mvc.FilterAttribute类.