У меня есть требование авторизации на уровне сущности, которое, честно говоря, выше моей головы. Я надеюсь получить некоторое руководство по этой структуре разрешений, как я могу реализовать ее в .NET 4.5 и есть ли способы ее улучшить.
Вот оно:
У меня есть набор данных, структурированный следующим образом:
Где
Fleet
- это набор из нуля или болееCars
.Fleet
может содержать другиеFleets
Позже флот может быть реорганизован и перемещен в организационных целях.
У меня есть несколько ролей с разрешениями в системе, которые относятся к этим объектам:
- Владелец: может добавлять или удалять автомобили из парка.
- Менеджер: назначает водителей автомобилям.
- Водитель: разрешено просто водить машину.
- Механик: разрешено ремонтировать машину.
Логика авторизации позволяет User
в системе предоставлять доступ либо Fleet
, либо Car
с одной или несколькими ролями.
Вот несколько сценариев, которые помогут объяснить:
- Если я предоставлю
User
Джиму доступ кFleet
№5 с рольюDriver
, ему будет разрешено управлять любым автомобилем в парке №2. Полученные разрешения позволяют ему управлять машинами №4, 5, 6. - Если я предоставлю пользователю Маура доступ к
Car #1
в качестве механика, полученные разрешения позволят ей починить только машину №1. - Если я предоставлю пользователю Саре доступ к флоту № 2 с ролями
Owner
иMechanic
, ей будет разрешено добавлять и удалять автомобили во флоты № 2, 4, 5 И она позволил починить автомобили №№ 1, 2, 3, 4, 5, 6. - Если я предоставлю пользователю Джереми доступ к автопарку №1 как
Owner
И к флоту №6 какDriver
, полученные разрешения позволят ему добавлять и удалять автомобили для всех парков < сильный> И водит машину № 7, 8. Он не может водить никакую другую машину, кроме № 7 и 8.
Каков хороший подход к авторизации на уровне сущности?
Если это важно, мы используем .NET 4.5.1 с EF6 Code First, построенный на основе ASP.net Boilerplate а>.