Web API OData Controller and Authorization Attribute

.net-4.5, asp.net-mvc, asp.net-mvc-4, asp.net-web-api, odata

Solution

Yes they can, but custom Auth Attributes should inherit from `System.Web.Http.AuthorizeAttribute`

try this implementation:

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

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

Problem

I am trying to use an MVC style authorization filter as an attribute on the Get() action method of an OData Web API controller, but the authorization filter is ignored. Can authorize attributes be used with either the EntitySetController or the 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; } } ```

Original source