IActionFilter和IAuthorizationFilter之间的区别
我只是想知道IActionFilter
和IAuthorizationFilter
之间是否有任何区别?
我假设我们可以在IActionFilter
下IActionFilter
可能具有IAuthorizationFilter
的相同逻辑……这是真的吗?
谢谢!
根据问题,是的,我们可以在IActionFilter
和IAuthorizationFilter
实现相同的逻辑。 但唯一的执行顺序不同。
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
。
Authorization
filter用于实现控制器操作的authentication
和authorization
。 例如,授权filter是授权filter的示例。
操作filter包含在执行控制器操作之前和之后执行的逻辑。 例如,您可以使用操作filter来修改控制器操作返回的视图数据。
Result
filter包含在执行视图结果之前和之后执行的逻辑。 例如,您可能希望在将视图呈现给浏览器之前修改视图结果。
Exception
filter是要运行的最后一种filter。 您可以使用exceptionfilter来处理由控制器操作或控制器操作结果引发的错误。 您还可以使用exceptionfilter来记录错误。
每种不同类型的filter以特定顺序执行。 如果要控制执行相同类型的filter的顺序,则可以设置filter的Order属性。
注意: 所有操作筛选器的基类是System.Web.Mvc.FilterAttribute
类。
授权filter在操作管道中很早就运行。 例如,当条件不满足时,它们可以逃离动作管道。 (使用它的示例MVC框架属性是[Authorize],[RequireHttps])
操作filter在授权filter之后执行,它可以参与操作的前后处理。
是的,您可以使用操作筛选器实现身份validation筛选器。 从这里 :
您可以使用操作筛选器进行日志记录,身份validation,输出缓存或其他任务。
我担心我不知道为什么除了IAuthorizationFilter
之外还存在差异,它是一个简单的接口,它的一个方法,它的上下文也有更少的属性。