Spring security 在成功登录和注销后编写aspectd以捕获用户名(SpringSecurity3.0.X)

Spring security 在成功登录和注销后编写aspectd以捕获用户名(SpringSecurity3.0.X),spring-security,spring-aop,Spring Security,Spring Aop,我正在写两个方面。第一种方法是在用户成功通过我的web应用程序身份验证时捕获用户名,另一种方法是在用户显式注销时捕获用户名。我很难找到只调用一次的Spring框架方法,因此可以捕获这些信息 我们使用的是基本的SpringSecurity3.0配置,唯一的补充是提供我们自己的UserDetailsService实现 有人能帮忙吗?事实证明,这样做完全是错误的。Spring有一组烘焙的ApplicationEvent类,您可以创建ApplicationListener来捕获这些类。奇怪的是,似乎没有

我正在写两个方面。第一种方法是在用户成功通过我的web应用程序身份验证时捕获用户名,另一种方法是在用户显式注销时捕获用户名。我很难找到只调用一次的Spring框架方法,因此可以捕获这些信息

我们使用的是基本的SpringSecurity3.0配置,唯一的补充是提供我们自己的UserDetailsService实现


有人能帮忙吗?

事实证明,这样做完全是错误的。Spring有一组烘焙的ApplicationEvent类,您可以创建ApplicationListener来捕获这些类。奇怪的是,似乎没有“LogoutEvent”,但有非常有用的AuthenticationSuccessEvent、AbstractAuthenticationFailureEvent、HttpSessionCreationEvent和HttpSessionDestroyeEvent。最有趣的是RequestHandledEvent

为了捕捉这些,我创建了自己的bean,它实现了

org.springframework.context.ApplicationListener;
并超越

public void onApplicationEvent(ApplicationEvent appEvent)

在这种情况下,我只需使用if/else来遍历各种appEvent类型,并采取适当的操作来跟踪用户和会话。

+1事件非常好,可以保持代码的解耦。我想补充一点,使用方面也可以是一种选择——例如,在需要从特定身份验证提供程序捕获事件的情况下,或者在需要更改主执行流本身的情况下。