【发布时间】:2014-05-08 23:47:31
【问题描述】:
ASP.NET Web API 2 自带five filter interfaces:
IActionFilterIAuthenticationFilterIAuthorizationFilterIExceptionFilterIOverrideFilter
除了IAuthenticationFilter,所有这些接口都有内置实现(例如ActionFilterAttribute、AuthorizationFilterAttribute)。这是有原因的,还是 Web API 开发人员只是忘记为该特定接口提供实现?
更新
阅读 Yishai Galatzer 的回答后,我最终实现了“缺失”属性并将其上传到 Nuget.org:https://www.nuget.org/packages/WebApi.AuthenticationFilter
【问题讨论】:
-
我假设没有
AuthenticationFilterAttribute,因为您可以使用AuthorizationFilterAttribute来满足用例(假设用例是您只“授权”已通过身份验证的人) -
进一步阐述,授权是授予访问权限的过程,然后可以使用身份验证来确定授权。
-
@Matthew
IAuthenticationFilter接口是在 v2 中引入的,因此您不必使用授权过滤器来执行身份验证和授权,这确实是一件好事。我不太明白的是为什么他们没有为那个新接口提供一个实现,以便我可以子类化它并以与自定义授权相同的方式实现我的自定义身份验证。 -
@Matthew 我当然可以自己实现
IAuthenticationFilter,它会工作得很好。但对我来说,子类化FilterAttribute类会更加一致,因为它通常与所有其他过滤器一起完成。
标签: asp.net asp.net-web-api asp.net-web-api2