我正在使用授权的控制器操作,其中一些是基于角色的。
[Authorize(Roles = "SuperUsers")]
public class UserGroupController : ApiController
{
private readonly MyContext context = new MyContext();
[HttpGet]
public async Task<IHttpActionResult> Get()
{
.......
}
}
当我想使用这个控制器时,我的请求会返回401未经授权的消息。
所以我创建了一个Authrization属性来禁用它:
public class DevelopmentAuthorizationFilter:AuthorizeAttribute
{
protected override bool IsAuthorized(HttpActionContext actionContext)
{
return actionContext.Request.RequestUri.IsLoopback || base.IsAuthorized(actionContext);
}
}
我将它添加到HttpConfiguration过滤器中。
public void Configuration(IAppBuilder app)
{
var configuration = new HttpConfiguration();
.............
configuration.Filters.Add(new DevelopmentAuthorizationFilter());
}
但它不起作用。我该如何解决这个问题?
答案 0 :(得分:0)
您向控制器应用了两个授权过滤器。 DevelopmentAuthorizationFilter
(已传递)在全局级别上,AuthorizeAttribute
(未传递)在控制器级别上。因此,在控制器级别仅使用DevelopmentAuthorizationFilter
可以解决问题。
[DevelopmentAuthorizationFilter(Roles = "SuperUsers")]
public class UserGroupController : ApiController
{
}