应用程序侦听器未收到事件通知

时间:2011-05-20 14:53:21

标签: java spring spring-mvc spring-security listener

我正在使用Spring Security进行验证的spring MVC应用程序。我想在登录时做一些工作,并且已经在多个地方看到了建议(包括enter link description here),以便使用应用程序监听器实现这一目的。我已经开始实施它了:

@Named
public class AccountLoginListener implements ApplicationListener<AuthenticationSuccessEvent> {

    @Inject
    AccountService accountService;

    @Override
    public void onApplicationEvent(AuthenticationSuccessEvent event) {
        Account account = (Account) event.getAuthentication().getDetails();
        ...
        accountService.saveAccount(account);
    }

}

不幸的是,似乎没有捕获AuthenticationSuccessEvent,当我调试时,永远不会调用onApplicationEvent函数。我没有在xml文件中做过任何其他配置,但我认为不应该这样做。我错过了一些配置,还是我做错了什么?

谢谢!

idbentley

2 个答案:

答案 0 :(得分:2)

如果您使用的是Spring Security 3,则应实现AuthenticationSuccessHandler,然后在应用程序上下文中配置此bean。

答案 1 :(得分:2)

public class AuthenticationSuccessListener
    implements ApplicationListener<InteractiveAuthenticationSuccessEvent> {

    @Inject
    AccountService accountService;

    @Override
    public void onApplicationEvent(InteractiveAuthenticationSuccessEvent event) {
        Account account = (Account) event.getAuthentication().getDetails();
        accountService.saveAccount(account);
    }
}