我有一组角色类型声明,我已经在登录时添加到用户的身份中。现在我需要创建一个方案来根据这些声明授权访问某些控制器。
从文档中可以看出,最好通过创建自定义过滤器来实现,但无论我做什么,我似乎都无法启动过滤器。
以下是我尝试的内容:
方法1 - 创建一个ClaimsAuthorizationAttribute,派生自System.Web.Http.Filters.AuthorizationFilterAttribute并覆盖OnAuthorizationAsync(我还尝试重写OnAuthorization),然后在WebApi.config中注册过滤器。
方法2 - 创建一个派生自System.Web.Http.AuthorizeAttribute并覆盖IsAuthorized的ClaimsAuthorization类,同时在WebApi.config中注册过滤器。
在这两种情况下,我都尝试在控制器方法中添加[ClaimsAuthorization]装饰,但也无济于事。
我在这里错过了什么吗?
答案 0 :(得分:0)
通过欣赏一个微妙但重要的区别来解决这个问题:而不是从System.Web.Mvc.AuthorizeAttribute派生,我需要使用System.Web.Http.AuthorizeAttribute。
不幸的是,这没有暴露OnAuthorizationAsync来覆盖所以我不得不围绕它来编写代码以利用我的异步方法。