2015-09-04 4 views
0

Я использую 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 
    } 

} 
+1

Как это бобы используются? Вызывается ли он во время веб-запроса? Если нет, то не будет аутентифицированного пользователя. –

ответ

-1

попробуйте добавить bean.autowire = 'byName' в определение фасоли

+0

Боб вводится правильно, но он возвращает null из вызова метода. autwire не имеет значения. –