限制从ODataController访问Model属性

时间:2016-05-20 16:16:57

标签: c# asp.net odata

我想知道如何根据用户角色限制对OData控制器中某些模型属性的访问。

例如我有一个名为Users的课程如下:

Public class Users
{
    public int Id { get; set; }

    public string FirstName { get; set; }

    public string LastName { get; set; }

    public string SSN { get; set; }
}

我有一个名为UsersODataController的ODataController,如下所示:

[EnableQuery]
public IQuerable<Users> GetUsersOData ()
{
    return db.Users.AsQueryable();
}

如果只有Admin用户访问时,如何让GetUsersOData方法返回SSN属性? 我能够在常规MVC控制器中实现 $ filter $ select 功能,并仅为Admin用户返回SSN属性。然而, 当我查询odata网址(例如http://localhost/UsersApplication/odata/UsersOData)时,我获得了包括SSN在内的所有属性。 是否可以在UsersODataController本身中应用过滤器逻辑,以便odata url仅为Admin Users返回SSN属性?

1 个答案:

答案 0 :(得分:0)

也许您可以在WebAPI / OData中使用OpenType功能,并将SSN属性放在角色的结果上。 Example E2E test

Public class Users
{
    public int Id { get; set; }

    public string FirstName { get; set; }

    public string LastName { get; set; }

    public IDictionary<string, object> DynamicProperties { get; set; }
}