我想知道如何根据用户角色限制对OData控制器中某些模型属性的访问。
例如,我有一个名为User的类如下所示:
Public class Users
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string SSN { get; set; }
}我有一个名为ODataController的UsersODataController,如下所示:
[EnableQuery]
public IQuerable<Users> GetUsersOData ()
{
return db.Users.AsQueryable();
}如何使GetUsersOData方法仅在管理员用户访问时才返回SSN属性?我能够在常规MVC控制器中实现$filter和$select功能,并且只为管理员用户返回SSN属性。但是,当我查询odata (例如,http://localhost/UsersApplication/odata/UsersOData)时,我得到了包括SSN在内的所有属性。是否可以将筛选逻辑应用于UsersODataController本身,以便odata仅为管理员用户返回SSN属性?
发布于 2016-05-23 03:31:02
也许您可以在WebAPI/OData中使用OpenType特性,并将SSN属性放在基于角色的结果中。示例E2E测试。
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; }
}https://stackoverflow.com/questions/37351324
复制相似问题