Spring Security:我在哪一点上知道用户已登录?

时间:2011-04-14 19:32:38

标签: java java-ee spring-security

我使用带有基于URL的拦截器的spring security来保护我的应用程序。在用户登录后,我可以在哪些类/哪些点进行自定义处理?

我特别想保存用户最后登录的日期,但我无法弄清楚如何实现这一目标。

非常感谢你的帮助。

1 个答案:

答案 0 :(得分:3)

您可以考虑实施org.springframework.context.ApplicationListener界面。

然后,您将专门听取org.springframework.security.authentication.event.AuthenticationSuccessEvent

然后您可以保留用户的登录信息。

可能的示例代码:

public void onApplicationEvent(ApplicationEvent event) {

    if (event instanceof AuthenticationSuccessEvent) {

        try {

            AuthenticationSuccessEvent authenticationSuccessEvent = (AuthenticationSuccessEvent) event;

            Authentication authentication = authenticationSuccessEvent.getAuthentication();

            //Persist your user's login here.

        } catch (Exception e) {

            // Handle exception as needed.
        }
    }
}