Web api开发时间授权属性禁用

时间:2017-11-07 08:54:06

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

我正在使用授权的控制器操作,其中一些是基于角色的。

    [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());
    }

但它不起作用。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

您向控制器应用了两个授权过滤器。 DevelopmentAuthorizationFilter(已传递)在全局级别上,AuthorizeAttribute(未传递)在控制器级别上。因此,在控制器级别仅使用DevelopmentAuthorizationFilter可以解决问题。

[DevelopmentAuthorizationFilter(Roles = "SuperUsers")]
public class UserGroupController : ApiController
{

}