Web API授权过滤器未被点击

时间:2018-01-27 18:36:54

标签: c# asp.net-web-api

我有一组角色类型声明,我已经在登录时添加到用户的身份中。现在我需要创建一个方案来根据这些声明授权访问某些控制器。

从文档中可以看出,最好通过创建自定义过滤器来实现,但无论我做什么,我似乎都无法启动过滤器。

以下是我尝试的内容:

方法1 - 创建一个ClaimsAuthorizationAttribute,派生自System.Web.Http.Filters.AuthorizationFilterAttribute并覆盖OnAuthorizationAsync(我还尝试重写OnAuthorization),然后在WebApi.config中注册过滤器。

方法2 - 创建一个派生自System.Web.Http.AuthorizeAttribute并覆盖IsAuthorized的ClaimsAuthorization类,同时在WebApi.config中注册过滤器。

在这两种情况下,我都尝试在控制器方法中添加[ClaimsAuthorization]装饰,但也无济于事。

我在这里错过了什么吗?

1 个答案:

答案 0 :(得分:0)

通过欣赏一个微妙但重要的区别来解决这个问题:而不是从System.Web.Mvc.AuthorizeAttribute派生,我需要使用System.Web.Http.AuthorizeAttribute。

不幸的是,这没有暴露OnAuthorizationAsync来覆盖所以我不得不围绕它来编写代码以利用我的异步方法。