2010-06-28 25 views
0

我正在从acegi插件迁移到spring security插件的过程中。目前正在使用grails环境。我面临一个奇怪的问题,因为我的身份验证成功事件和身份验证错误凭据事件根本不会抛出。我在config.groovy中的回调中还通过侦听器添加了println语句。但是我可以捕获InteractiveAuthenticationSuccessEvent等事件。请不要回应,如果你已经通过了同样的问题Spring安全插件不会抛出事件

回答

1

了如您需要启用以“useSecurityEventListener”事件,并配置一个或多个回调倒闭,例如user guide的第5章中提到:

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" 
} 
+0

嘿,我试图做所有这些,但问题是这些事件从未被调用的。我只能接收onInteractiveAuthenticationSuccessEvent。我浏览了Spring源代码,并在AbstractAuthenticationProcessingFilter类中进行了验证,他们仅在成功验证时抛出onInteractiveAuthenticationSuccessEvent,在验证失败时他们只是调用失败处理程序。是否需要添加处理程序而不是侦听事件?还是我需要注入供应商经理?我没有添加任何供应商经理,认为grails的插件会为我做:( – prabha 2010-06-29 05:19:24

+0

嗯,看起来像Spring Security 2和3之间的事情发生了变化。请在http://jira.codehaus.org/上创建一个问题。浏览/ Grails-Spring-Security-Core组件下的GRAILSPLUGINS,我将看到我可以为下一个版本做些什么 – 2010-06-29 05:46:09

+0

嘿,感谢您的关注。我们记录了一个bug,就像你说的http://jira.codehaus .org/browse/GRAILSPLUGINS-2248 – prabha 2010-06-29 09:05:06

0

的提供程序管理器默认使用Null事件发布程序。我们可以在resources.groovy中注入默认的身份验证事件发布者。

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