Web API OData控制器和授权属性

3

我正在尝试将MVC风格的授权过滤器作为属性应用于OData Web API控制器的Get()操作方法,但是授权过滤器被忽略了。EntitySetController或ODataController是否支持使用授权属性?

public class MyEntityController : EntitySetController<MyEntity, int>
{
    [CustomAuthorizeAttribute(AccessPermission.View)]
    [Queryable( AllowedQueryOptions = AllowedQueryOptions.All)]
    public override IQueryable<MyEntity> Get()
    {
        // Contents omitted.
    }
}

public class CustomAuthorizeAttribute : AuthorizeAttribute
{
    public AccessPermission RequiredPermission { get; set; }

    public CustomAuthorizeAttribute(AccessPermission requiredPermission)
    {
        RequiredPermission = requiredPermission;
    }
}
1个回答

4

是的,它们可以,但自定义身份验证属性应继承System.Web.Http.AuthorizeAttribute

尝试使用以下实现:

public class CustomAuthorizeAttribute : System.Web.Http.AuthorizeAttribute
{
    public AccessPermission RequiredPermission { get; set; }

    public CustomAuthorizeAttribute(AccessPermission requiredPermission)
    {
        RequiredPermission = requiredPermission;
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接