Преобразование сайта ASP.NET с одной базой данных в мультитенантный — дилемма членства и ролей
-
20-08-2019 - |
Вопрос
Я занимаюсь преобразованием одного веб-сайта базы данных SQL (ASP.NET/VB.NET) в мультитенантное приложение, где каждый клиент имеет свою собственную базу данных.
На старом сайте все роли, имена входа и поставщики ASP указывали на одну базу данных.
Теперь у нас есть несколько баз данных, и мне интересно, какую архитектуру/методы лучше всего использовать.Существует одна база данных, которая настраивает клиентов, например название компании, различные параметры (которые обычно находятся в файле web.config) и строку подключения к их базе данных клиентов.
Должны ли мы хранить все данные о членстве и ролях в единой базе данных, которая настраивает арендаторов, или у нас есть членство и роли в каждой отдельной базе данных арендаторов?Вариант 2 кажется сложным, поскольку я думаю, что ASP.NET нравится только один набор RoleProviders, определенный в файле web.config.
Кто-нибудь пробовал это раньше или получил какие-либо рекомендации?
Решение
Если вы используете модель членства ASP.Net со встроенными поставщиками, то поместить их в одну БД проще всего, как вы указали.
Один из вариантов (я его не пробовал) — определить в файле web.config поставщика для каждого арендатора.Это позволит каждому арендатору иметь собственную базу данных членства и позволит избежать конфликтов имен пользователей между арендаторами (если это является обязательным).
Другие советы
У вас должна быть возможность настроить строку подключения к базе данных членства ASP.NET во время выполнения. Эта тема имеет несколько вариантов, включая настраиваемого поставщика членства или изменение значения на ранних этапах жизненного цикла запроса через Global.asax.cs.