Spring安全插件不会抛出事件

时间:2010-06-28 06:28:03

标签: security events grails plugins registering

我正在从acegi插件迁移到spring安全插件。目前正在处理grails环境。我面临一个奇怪的问题,因为我的身份验证成功事件和身份验证错误凭据事件根本没有抛出。我在config.groovy的回调中添加了println语句,也通过了侦听器。但是我可以捕获InteractiveAuthenticationSuccessEvent之类的事件。如果您遇到同样的问题,请回复

2 个答案:

答案 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 }