Как реализовать безопасность на уровне строк в шаблоне ASP.NET?

Я начал использовать ASP.NET Boilerplate месяц назад, так что это вопрос для начинающих. Я чувствую, что это отличный фреймворк — большое спасибо за его создание и распространение.

Я разрабатывал мультитенантное приложение и теперь хочу фильтровать строки на основе арендатора. Как правильно это сделать в ASP.NET Boilerplate? Я думал передать TenantId при каждом вызове БД или создать контекст запроса, в котором будут все детали, и передать это вместе с вызовом метода. А затем в методе проверьте, соответствует ли TenantId этой конкретной строки тому, что мы передаем. Если нет, то откажитесь, иначе продолжите. Внеся несколько изменений здесь и там, я могу добиться того, чего хочу, но я хочу знать, как правильно это сделать в ASP.NET Boilerplate.

Во-вторых, есть ли готовый пример интеграции функции безопасности на уровне строк SQL Server в ASP.NET Boilerplate?

Большое спасибо.


person Zainu    schedule 23.11.2018    source источник
comment
Добро пожаловать. Не могли бы вы просто вставить код вместе с описанием?   -  person Bruno Berisso    schedule 23.11.2018


Ответы (1)


Я разрабатывал мультитенантное приложение и теперь хочу фильтровать строки на основе арендатора. Как правильно это сделать в ASP.NET Boilerplate? Я думал передать TenantId при каждом вызове БД или создать контекст запроса, в котором будут все детали, и передать это вместе с вызовом метода. А затем в методе проверьте, соответствует ли TenantId этой конкретной строки тому, что мы передаем. Если нет, то откажитесь, иначе продолжите.

Это встроенная функция ASP.NET Boilerplate, реализованная через EF Core. Глобальные фильтры запросов.

Дополнительная информация: https://aspnetboilerplate.com/Pages/Documents/Multi-Tenancy#data-filters

Во-вторых, есть ли готовый пример интеграции функции безопасности на уровне строк SQL Server в ASP.NET Boilerplate?

Нет, все вызовы БД выполняются одним и тем же доверенным пользователем БД, определенным строкой подключения.

Возможно, вы неправильно поняли Безопасность на уровне строк.

Вы можете передать другую строку подключения в зависимости от пользователя приложения, но это просто авторизация на уровне приложения — также встроенная, реализованная через Castle Windsor Перехватчики.

Дополнительная информация: https://aspnetboilerplate.com/Pages/Documents/Authorization.

person aaron    schedule 23.11.2018
comment
aspnetboilerplate.com/Pages/Documents/ идеально объясняет фильтр с TenantId а с помощью IPermissionChecker (aspnetboilerplate.com/Pages/Documents/Authorization) я могу добиться того, чего хочу . Большое спасибо за то, что поделились этими подробностями. - person Zainu; 24.11.2018