为什么我必须调用base.OnAuthorization(filterContext)

时间:2012-09-30 19:53:01

标签: asp.net authorization asp.net-web-api

我见过很多指南,其中自定义授权过滤器的实现涉及调用base.OnAuthorization(filterContext)作为最后一步。我有自己的自定义授权过滤器,它没有上面提到的完美工作。但是,当我添加对base.OnAuthorization(filterContext)的调用时,即使所有检查都成功通过,我的WebAPI服务也会返回401。

1)为什么我要打电话给base.OnAuthorization? 2)为什么它会自己返回401?

编辑:我认为这与默认会员和角色提供商有关。既然我不喜欢那些,那可能就是这个原因吗?

一旦我调用base.OnAuthorization,我的响应变为401。

1 个答案:

答案 0 :(得分:3)

如果您自己处理所有事情,则无需致电。

但是如果你这样做,授权逻辑会将用户(IPrincipal.Identity)拉出Thread.CurrentPrincipal,如果满足下列条件之一,将拒绝授权(401):

  • IPrincipal为空

  • IPrincipal.Identity未经过身份验证

  • IPrincipal.Identity已通过身份验证,但未获得授权 用户组,或者用户未处于任何授权角色 (在属性上指定)