Плагин безопасности Spring не генерирует события

Я нахожусь в процессе перехода на плагин безопасности Spring с плагина acegi. В настоящее время работаю над средой Grails. Я столкнулся со странной проблемой, так как мое событие успешной аутентификации и событие аутентификации неверных учетных данных вообще не генерируются. Я добавил операторы println в обратный вызов в config.groovy, а также через слушателей. Однако я могу перехватывать такие события, как InteractiveAuthenticationSuccessEvent. Пожалуйста, ответьте, если вы столкнулись с той же проблемой


person prabha    schedule 28.06.2010    source источник


Ответы (2)


Как упоминалось в главе 5 руководства пользователя, вам понадобится для включения событий с помощью «useSecurityEventListener» и настройки одного или нескольких закрытий обратного вызова, например:

grails.plugins.springsecurity.useSecurityEventListener = true

grails.plugins.springsecurity.onInteractiveAuthenticationSuccessEvent = { e, appCtx ->
   println "onInteractiveAuthenticationSuccessEvent: $e"
}

grails.plugins.springsecurity.onAbstractAuthenticationFailureEvent = { e, appCtx ->
   println "onAbstractAuthenticationFailureEvent: $e"
}

grails.plugins.springsecurity.onAuthenticationSuccessEvent = { e, appCtx ->
   println "onAuthenticationSuccessEvent: $e"
}

grails.plugins.springsecurity.onAuthenticationSwitchUserEvent = { e, appCtx ->
   println "onAuthenticationSwitchUserEvent: $e"
}
person Burt Beckwith    schedule 29.06.2010
comment
Эй, я пробовал делать все это, но проблема была в том, что эти события никогда не вызывались. Мне удалось получить только onInteractiveAuthenticationSuccessEvent. Я просмотрел исходный код Spring, и там, в классе AbstractAuthenticationProcessingFilter, они просто бросают onInteractiveAuthenticationSuccessEvent при успешной аутентификации, при неудачной аутентификации они просто вызывают обработчик ошибок. Нужно ли мне добавлять обработчики вместо прослушивания событий? или мне нужно вводить менеджеров поставщиков? Я не добавил ни одного менеджера провайдеров, думая, что плагин для grails сделает это за меня :( - person prabha; 29.06.2010
comment
Хммм, похоже, что кое-что изменилось между Spring Security 2 и 3. Пожалуйста, создайте проблему на jira.codehaus.org/ просмотрите / GRAILSPLUGINS в компоненте Grails-Spring-Security-Core, и я посмотрю, что я могу сделать для следующего выпуска. - person Burt Beckwith; 29.06.2010
comment
Привет, спасибо за продолжение. Мы зарегистрировали ошибку, как вы сказали jira.codehaus.org/browse / GRAILSPLUGINS-2248 - person prabha; 29.06.2010
comment
Я выпустил версию плагина 0.4.1 с этим исправлением. - person Burt Beckwith; 30.06.2010

Диспетчер поставщиков по умолчанию использует издателя событий Null. Мы можем ввести издателя событий аутентификации по умолчанию в resources.groovy.

defaultEventPublisher(DefaultAuthenticationEventPublisher) /** authenticationManager */ authenticationManager(ProviderManager) { authenticationEventPublisher = ref('defaultEventPublisher') providers = listOfProviders }

person Kalarani    schedule 29.06.2010