我想知道如何根据用户角色限制对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属性?
答案 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; }
}