LightSpeed и мультитенантные базы данных
У меня есть база данных, которую используют многие организации (многопользовательский сценарий).
Я хотел бы убедиться, что авторизованный пользователь может просматривать данные только одной организации без необходимости каждый раз явно кодировать такое ограничение.
Есть ли хороший подход с LightSpeed для этого?
2 ответа
Одним из возможных решений является создание отдельных таблиц для каждого арендатора, то есть таблиц с префиксом определенного типа идентификатора арендатора.
Например, если у вас есть таблица клиентов, вы можете добавить ее к имени клиента
Client1_Customer
Client2_Customer
Lightspeed имеет встроенную стратегию именования DefaultNamingStrategy, которую можно заменить собственной реализацией INamingStrategy. Все, что вам нужно сделать, это реализовать GetTableName, чтобы вы могли определить текущего арендатора и выбрать соответствующее имя таблицы.
Я обнаружил замечательную функцию в LightSpeed, которая называется QueryFilterAttributes. Я могу создать атрибут фильтра организационного запроса, который позволит внедрить идентификатор организации в запрос, очень похожий на собственное мягкое удаление LightSpeed.
Очень гладко