2014-10-09 5 views
0

Ищите несколько советов и направлений с уровнями доступа в пределах Ролей.MVC - Уровни доступа в пределах ролей

У меня есть проект MVC, который использует AspNetRoles, например, я следующие роли Настройка: администратора CustomerIndex CustomerCreate

В моем контроллере клиента у меня есть:

[Authorize(Roles = "Admin, CustomerIndex")] 
public ActionResult Index() .... 

[Authorize(Roles = "Admin, CustomerCreate")] 
public ActionResult Create() ... 

Я хочу ограничить то, что Пользователь может видеть и делать на основе его/ее уровня доступа в роли.
Скажем, у меня есть следующие Клиенты: ABC, DEF, XYZ

Я хочу, чтобы предоставить различным пользователям доступ для чтения к различным клиентам, а именно: User1, чтобы иметь CustomerIndex роль, но только просматривать данные ABC, DEF, а затем Пользователь2 к имеют роль ClientIndex, но только для клиента XYZ, а затем аналогичны для роли CustomerCreate.

Так что если User1 работает на странице клиента, он будет представлен только с данными клиента для ABC, DEF Если Пользователь2 делает то же самое, что он будет видеть только данные для клиента XYZ

Что является лучшим способом добиться чего-то подобного?

+0

У вас здесь сложная ситуация, вы не можете достичь этого только с помощью подхода на основе ролей. Но вы можете создавать претензии во время создания пользователей, а затем использовать требования, основанные на требованиях, с вашими требованиями. – DSR

ответ

0

В вашем случае клиенты, которых пользователь может видеть, на самом деле не связаны с их ролями. Вам нужно подумать о возврате отфильтрованного списка клиентов через бизнес-логику приложений, а не пытаться сделать это через роли.

В вашем примере вам понадобится какое-то хранилище данных с столбцом «Пользователь» и столбцом «Клиент».

ПользователиКлиенты
User1 ABC
User1 DEF
Пользователь2 XYZ

Когда пользователь с CustomerIndex роль запрашивает контроллер Index, атрибут Авторизоваться позволит им получить доступ, то в сам контроллер, вы запрашиваете свое хранилище данных и возвращаете всех Клиентов для текущего пользователя и передаете это обратно вашему представлению в модели. То же самое касается контроллера Create.

Смежные вопросы