2016-05-20 3 views
0

Мне интересно, как ограничить доступ к определенным свойствам модели в контроллере OData на основе ролей пользователей.Ограничение доступа к свойству Model из ODataController

См., Например, У меня есть класс с именем пользователей, как показано ниже:

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 собственность только при доступе пользователей админ? Я смог реализовать фильтр $ и $ select функциональность в регулярном MVC-контроллере и вернуть свойство SSN только для пользователей Admin. Тем не менее, , когда я запрашиваю urata odata (например, http://localhost/UsersApplication/odata/UsersOData), я получаю все свойства, включая SSN. Можно ли применить логику фильтра в самом UserODataController, чтобы URL-адрес одаты возвращал свойство SSN только для пользователей-администраторов?

ответ

0

Возможно, вы можете использовать функцию OpenType в WebAPI/OData и поместить свойство 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; } 
} 
Смежные вопросы