Ошибка при регистрации прослушивателя событий с использованием плагина Spring Security Core и Grails 2.0.0 - PullRequest
0 голосов
/ 14 февраля 2012

Я пытаюсь зарегистрировать прослушиватель событий для успешного входа в систему, чтобы я мог выполнить некоторую логику, когда узнал, что пользователь только что прошел аутентификацию. Согласно весенним документам по безопасности, я регистрирую событие следующим образом:

package grails.admin

import org.springframework.context.ApplicationListener
import org.springframework.security.authentication.event. AuthenticationSuccessEvent

class SuccessfulAuthenticationEventListener implements ApplicationListener<AuthenticationSuccessEvent> {

    void onApplicationEvent(AuthenticationSuccessEvent event){
        System.out.println("THERE WAS A SUCCESSFUL LOGIN");
    }

}

А затем подключите его в config.groovy следующим образом:

import grails.admin.SuccessfulAuthenticationEventListener
beans = {
    successfulAuthenticationEventListener(SuccessfulAuthenticationEventListener)
}

Когда я запускаю свой проект, он вылетает со следующим сообщением:

[Thread-9] ERROR context.GrailsContextLoader  - Error executing bootstraps: Cannot cast object 'Config$_run_closure5@4eff1d61' with class 'Config$_run_closure5' to class 'groovy.util.ConfigObject'

Я погуглил ошибку, не повезло, а теперь обратись к тебе, замечательные люди! Есть ли проблема с совместимостью, и мне придется использовать другой метод для этого?

Ответы [ 2 ]

2 голосов
/ 14 февраля 2012

Вы должны добавить следующее свойство в Config.groovy

grails.plugins.springsecurity.useSecurityEventListener = true

И зарегистрируй слушателя в resources.groovy

beans = {
    mySecurityEventListener(com.abc.MySecurityEventListener)

}

http://grails -plugins.github.com / Grails-весна-безопасности ядро ​​/ документы / руководство / руководство / 7% 20Events.html

2 голосов
/ 14 февраля 2012

resources.groovy используется для регистрации дополнительных бобов весной.Вы должны поместить определение bean-компонента в resources.groovy, а не config.groovy

...