我正在从acegi插件迁移到spring安全插件。目前正在处理grails环境。我面临一个奇怪的问题,因为我的身份验证成功事件和身份验证错误凭据事件根本没有抛出。我在config.groovy的回调中添加了println语句,也通过了侦听器。但是我可以捕获InteractiveAuthenticationSuccessEvent之类的事件。如果您遇到同样的问题,请回复
答案 0 :(得分:1)
如user guide第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"
}
答案 1 :(得分:0)
默认情况下,提供程序管理器使用Null事件发布者。我们可以在resources.groovy中注入默认的身份验证事件发布者。
defaultEventPublisher(DefaultAuthenticationEventPublisher)
/** authenticationManager */
authenticationManager(ProviderManager) {
authenticationEventPublisher = ref('defaultEventPublisher')
providers = listOfProviders
}