【问题标题】:Web API OData Controller and Authorization AttributeWeb API OData 控制器和授权属性
【发布时间】:2013-02-22 02:22:51
【问题描述】:

我正在尝试使用 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;
    }
}

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-4 asp.net-web-api odata .net-4.5


    【解决方案1】:

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

    试试这个实现:

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

    【讨论】:

      猜你喜欢
      • 2020-04-11
      • 1970-01-01
      • 1970-01-01
      • 2014-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-19
      相关资源
      最近更新 更多