Последовательность действий будет такой. p>
Войти
- Пользователь входит в систему
- получает токен JWT
- Пользователь отправляет запрос
- Контроллер получает запрос с помощью JWT
- Контроллер отправляет addMeeting в MeetingService.
- MeetingService извлекает uid из токена.
- MeetingService извлекает соответствующий клиент и идентификатор арендатора.
- MeetingService устанавливает TenantID в запросе Компонент TenantContext с областью действия
- MeetingService извлекает все потенциально конфликтующие собрания (надеюсь, используя TenantID для поиска только собраний данного арендатора)
- Если конфликта не остается, добавляется новое собрание с правильным набором идентификаторов арендатора.
Вот что у меня есть
Код: Выделить всё
import java.util.Map;
@Component
@RequiredArgsConstructor
//This class is supposed to set the tenantContextString in JPA
public class TenantIdentifierResolver implements CurrentTenantIdentifierResolver, HibernatePropertiesCustomizer {
TenantContext tenantContext=null;
@Override
public String resolveCurrentTenantIdentifier() {
if(tenantContext.getCurrentTenant()==null)
throw new IllegalStateException("No tenant set");
return tenantContext.getCurrentTenant();
}
@Override
public void customize(Map hibernateProperties) {
hibernateProperties.put(AvailableSettings.MULTI_TENANT_IDENTIFIER_RESOLVER, this);
}
@Override
public boolean validateExistingCurrentSessions() {
return false;
}
}
@Component
@RequestScope
//The controller can set the appropriate TenantContext for each request
public class TenantContext {
@Getter @Setter
private String currentTenant=null;
}
Код: Выделить всё
spring.jpa.properties.hibernate.multiTenancy = DISCRIMINATOR
spring.jpa.properties.hibernate.tenant_identifier_resolver = com.polaris.polaris.auth.tenant.TenantIdentifierResolver
Код: Выделить всё
Error creating bean with name 'scopedTarget.tenantContext': Scope 'request' is not active for the current thread; consider defining a scoped proxy for this bean if you intend to refer to it from a singleton
Подробнее здесь: https://stackoverflow.com/questions/793 ... pring-boot