Где мы должны поместить ACL в наше приложение?
У нас есть приложение ASP.NET MVC со следующей структурой (упрощенно):
- Данные
- Репозиторий
- Бизнес-логика
- Просмотр моделей
- Контроллеры
- Представления
В настоящее время используется модель поставщика ролей, нонас попросили предоставить разрешения и функциональность на уровне строк.Из прочитанного мною чтения это обычно называется ACL - списки контроля доступа, поскольку оно отходит от модели поставщика ролей - у пользователя могут быть разные функциональные возможности для каждого экземпляра сущности.
Как япосмотрите, что требование состоит из двух частей - возможность для пользователя извлекать подмножество сущностей на основе предоставленного доступа, а затем функциональные возможности, которые они могут выполнять на доступной сущности.
Данныедоступ, вероятно, должен быть сделан как можно ближе к уровню данных - он будет более безопасным и окажет меньше влияния на производительность.Я думаю, что мы не хотим проверять уровень функциональности, который есть у пользователя на данный момент.Должны ли мы делать это на уровне BL или в действиях контроллера, подобно тому, как мы в настоящее время украшаем методы действий ролями.
Существует ли существующая структура или продукт, который поможет с этим?Мы смотрим на Azman и SQLAzman - есть ли другие, для стека SQL Server / Entity Framework?