Когда запрос попадает на мою страницу входа в систему, я получаю tenantId и сохраняю его в сеансе.
Integer tenantId = tenantResolver?.getTenantFromRequest(request)
if (session.tenantId == null) {
session.tenantId = tenantId
}
Чтобы получить информацию о зарегистрированных пользователях, я переопределяю метод loadUserByUsername, реализуя GrailsUserDetailsService и вызываяв рамках сделки.
UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
def requst = SecurityRequestHolder.request
def httpSession = requst.getSession(false)
Integer tenant = httpSession.tenantId
TenantUtils.doWithTenant (tenant) {
User.withTransaction { status ->
User user = User.findByUsername(username)
}
}
}
Теперь моя проблема решена.