首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IActionFilter与IAuthorizationFilter的区别

IActionFilter与IAuthorizationFilter的区别
EN

Stack Overflow用户
提问于 2013-10-08 13:47:50
回答 3查看 3.9K关注 0票数 6

我只是想知道IActionFilterIAuthorizationFilter之间是否有什么区别?

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

谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-10-08 14:42:54

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

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

代码语言:javascript
复制
    Authorization – Implements  IAuthorizationFilter Attribute.
    Action        – Implements IActionFilter Attribute.
    Result        – Implements  IResultFilter Attribute.
    Exception     – Implements  IExceptionFilter Attribute.

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

授权筛选器总是在操作筛选器之前执行,异常筛选器总是在每种其他类型的filter之后执行。

Authorization过滤器用于实现控制器操作的authenticationauthorization。例如,授权筛选器是授权筛选器的一个示例。

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

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

Exception过滤器是最后一种要运行的筛选器。可以使用异常筛选器处理控制器操作或控制器操作结果引发的错误。还可以使用异常筛选器记录错误。

每种不同类型的过滤器按特定顺序执行。如果希望控制执行相同类型的筛选器的顺序,则可以设置筛选器的order属性。

注释:所有动作过滤器的基类是System.Web.Mvc.FilterAttribute类。

票数 9
EN

Stack Overflow用户

发布于 2013-10-08 14:23:27

授权筛选器在操作管道中运行得非常早。例如,当不满足条件时,它们可以从动作管道中逃脱。(使用它的样例MVC框架属性是授权的,RequireHttps)

动作过滤器在授权筛选器之后执行,它可以参与动作的前后处理。

票数 3
EN

Stack Overflow用户

发布于 2013-10-08 13:59:58

是的,您可以使用动作筛选器实现身份验证筛选器。来自这里

您可以使用操作筛选器记录、身份验证、输出缓存或其他任务。

恐怕我不知道为什么会有不同之处,除了IAuthorizationFilter是一个更简单的接口与它的一个方法,它也有较少的属性在它的上下文。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19249511

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档