我只是想知道IActionFilter和IAuthorizationFilter之间是否有什么区别?
我假设我们可以在IActionFilter下实现可能具有IAuthorizationFilter的相同逻辑.这是真的吗?
谢谢!
发布于 2013-10-08 14:42:54
问题是,是的,我们可以在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类。
发布于 2013-10-08 14:23:27
授权筛选器在操作管道中运行得非常早。例如,当不满足条件时,它们可以从动作管道中逃脱。(使用它的样例MVC框架属性是授权的,RequireHttps)
动作过滤器在授权筛选器之后执行,它可以参与动作的前后处理。
发布于 2013-10-08 13:59:58
是的,您可以使用动作筛选器实现身份验证筛选器。来自这里
您可以使用操作筛选器记录、身份验证、输出缓存或其他任务。
恐怕我不知道为什么会有不同之处,除了IAuthorizationFilter是一个更简单的接口与它的一个方法,它也有较少的属性在它的上下文。
https://stackoverflow.com/questions/19249511
复制相似问题