Как внедрить springSecurityService в пользовательский слушатель - PullRequest
0 голосов
/ 30 декабря 2011

Я использую Grails 1.3.7 alogn с SpringSecurity и у меня есть требование, когда мне нужно выполнить небольшую обработку, когда истекает сеанс пользователя.

Итак, я определил класс в src / groovy, который реализует HttpSessionListener и переопределяет метод sessionDestroyed. Класс слушателя определяется как «слушатель» в web.xml.

Я добавил 'def springSecurityService' в слушатель, который, как я надеялся, автоматически внедрит службу, но это не так.

Итак, мне интересно, что еще мне нужно сделать для того, чтобы инъекция произошла, я должен как-то объявить класс слушателя в resources.groovy?

Спасибо

Dave

Ответы [ 2 ]

3 голосов
/ 30 декабря 2011

Слушатели создаются контейнером сервлета и, таким образом, находятся вне досягаемости Spring.Однако вы можете получить доступ к контексту приложения через servletcontext (доступно в объекте сеанса).Что-то вроде этого должно получить вам услугу:

В 2.0.0 вы можете использовать:

public void sessionDestroyed(HttpSessionEvent se) {
    ServletContext context = se.getSession().getServletContext();
    GrailsApplication application = GrailsWebUtil.lookupApplication(context);
    application.getMainContext().getBean("springSecurityService");
}

В предыдущих версиях GrailsWebUtil.lookupApplication () недоступно, но вместо этого вы можете использовать org.codehaus.groovy.grails.commons.ApplicationHolder.getApplication () .

0 голосов
/ 23 января 2015

В 2.0 и более поздних версиях вы можете использовать плагин spring-security-core: 2.0-RC4

Установка в BuildConfig.groovy compile ': spring-security-core: 2.0-RC4'

Class MyController {
static allowedMethods = [save: "POST", update: "PUT", delete: "DELETE"]

    def springSecurityService
    def index(Integer max) {
        params.max = Math.min(max ?: 10, 100)
        def user = (User)springSecurityService.currentUser
        respond User.list(params), model: [userInstanceCount: User.count() ]
    }
}  

Дополнительная информация для http://grails -plugins.github.io / grails-spring-security-core /

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...