Документ / действие / команда разрешения / контроля доступа, rbac, abac
Я разрабатываю бизнес-веб-приложение для закупок. Я использую ASP.NET MVC Core 2.0, EF core 2.0, MSSQL Server. Пару месяцев я искал ответ на свой вопрос в интернете, но не смог его найти. Допустим, у меня есть документ, и я хочу контролировать разрешения для различных действий над документом (чтение, редактирование, удаление, редактирование номера документа, редактирование различных его атрибутов и т. Д.). Поэтому я разработал некоторый интерфейс IPermissionControl и несколько классов, реализующих этот интерфейс, таких как RoleBasedPermissionControl и т. Д. Теперь у меня есть проблема. Вся моя бизнес-логика в приложении.Net, а не в Db. Поэтому, когда пользователь открывает список всех разрешенных документов, все документы выбираются из БД и проверяются на наличие разрешений в приложении. Это создает большую проблему с производительностью, поэтому, если в базе данных есть 1000000 документов, а у пользователя есть разрешения только для 10 из них, плохая идея получить их все. Как решить эту проблему, оставив все приложения BL в C#?
Заранее спасибо!