Многопользовательская среда Spring HibernateJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Многопользовательская среда Spring Hibernate

Сообщение Anonymous »

Я реализовал функцию мультиарендности в своем приложении Spring Boot (3.2.1).
У меня есть TenantFilter, который устанавливает TenantContexts currentTennat в одно из следующих значений:
  • ALL (тенант по умолчанию, который я устанавливаю, когда пользователь имеет роль суперадминистратора)
  • XYZ (XYZ представляет значение заголовка, который я передаю), если пользователь является администратором/обычным пользователем
Здесь есть 2 объекта iteres:
  • Субъект пользователя, поле которого помечено @TenantId (tenantCode).
  • Сущность статьи, которую я пытаюсь создать, также помечена @TenantId (tenantCode) и дополнительно имеет поле User createBy (поле аудита, разрешенное из AuditorAware – getCurrentAuditor)
Итак, суперадмин хочет создать статью для какого-то арендатора. Для прохождения авторизации необходимо отправить в запрос DEFAULT TENANT CODE (чтобы его можно было найти в БД). Но когда я пытаюсь сохранить статью в БД, она сохраняется с КОДОМ АРЕНДАТОРА ПО УМОЛЧАНИЮ. Таким образом, ни один обычный пользователь/администратор из желаемого арендатора не сможет его найти (поскольку им необходимо отправить код арендатора, представляющий его арендатора, с запросом).
Если, с другой стороны, я отправляю TENANT_CODE желаемого арендатора с этим запросом на создание статьи, исходящим от суперадминистратора, тогда пользователь суперадминистратора не может быть найден в БД, а поле CreateBy (то есть NotNull) является нулевым объектом, который невозможно сохранить.
Мой вопрос: могу ли я, если мой пользователь является суперадминистратором, иметь DEFAULT_TENANT_CODE для операций чтения и конкретный TENANT_CODE для операций записи (создания/обновления/удаления).
Все предложения и последующие вопросы приветствуются!
P.S. Я использую общую базу данных и общую схему (так что для меня tenant_code является столбцом дискриминатора)
Я просмотрел определения CurrentTenantIdentifierResolver и AvailableSettings, используемые для HibernatePropertiesCustomizer.

Подробнее здесь: https://stackoverflow.com/questions/779 ... ltitenancy
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»