我正在使用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
答案 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);
}
}