Я использую Grails 2.4.3 и в Граалей-приложение/CONF/весна/resources.groovy,Grails springSecurityService в resources.groovy дает NULL пользователю текущее
beans = {
someBean(com.domain.SomeBeanImpl) {
springSecurityService = ref('springSecurityService')
}
}
Но внутри SomeBeanImpl
класса,
class SomeBeanImpl {
def springSecurityService
def method() {
def user = springSecurityService.currentUser //null, even after successful log-in
}
}
В моих контроллерах и службах я обычно могу получить springSecurityService.currentUser
.
Почему это null на заказ bean? Как правильно получить его?
EDITED:
Я использовал grails mt-spring-security
от http://multi-tenant.github.io/grails-multi-tenant-single-db/docs/v0.8.3/guide/4.%20Scripts.html#4.2.%20mt-spring-security,
и использование springSecurityService боб в этом классе,
/**
* Spring Security Tenant Resolver
* Extracts the tenantId
* @see http://multi-tenant.github.com/grails-multi-tenant-single-db/
*/
@Log4j
class SpringSecurityTenantResolver implements TenantResolver {
def springSecurityService
Integer resolve(HttpServletRequest request) throws TenantResolveException {
def user = springSecurityService.currentUser
/*
if (!user) {
throw new TenantResolveException('Tenant could not be resolved using SpringSecurity')
}
*/
log.debug "${request.requestURL} : ${user?.username} : ${user?.tenantId}"
return user?.tenantId
}
}
Как это бобы используются? Вызывается ли он во время веб-запроса? Если нет, то не будет аутентифицированного пользователя. –