2013-03-07 75 views
3

我試圖使用MVC樣式授權過濾器作爲OData Web API控制器的Get()操作方法的屬性,但授權過濾器被忽略。可以授權屬性與EntitySetController或ODataController一起使用嗎?Web API OData控制器和授權屬性

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; 
    } 
} 

回答

4

是的,他們可以,但是定製驗證屬性應該繼承System.Web.Http.AuthorizeAttribute

試試這個實施:

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

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