3

OData Web API コントローラーの Get() アクション メソッドの属性として MVC スタイルの承認フィルターを使用しようとしていますが、承認フィルターは無視されます。認可属性は 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;
    }
}
4

1 に答える 1

4

はい、できますが、カスタム認証属性はから継承する必要がありますSystem.Web.Http.AuthorizeAttribute

この実装を試してください:

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

    public CustomAuthorizeAttribute(AccessPermission requiredPermission)
    {
        RequiredPermission = requiredPermission;
    }
}
于 2013-03-07T02:33:11.113 に答える