通过共享Redis会话连接的两个Spring应用程序的AuthenticationSuccessEvent Listener

时间:2018-08-07 12:08:48

标签: spring-boot spring-security spring-data-redis

我有两个通过Redis共享会话的spring-boot应用程序。 application-1包含登录流程,而application-2使用在application-1上创建的相同会话,

现在,我想听一下application-2上的成功身份验证。

尝试使用InteractiveAuthenticationSuccessEvent侦听器,如下所示。

@EventListener({AuthenticationSuccessEvent.class, InteractiveAuthenticationSuccessEvent.class})
public void processAuthenticationSuccessEvent(AbstractAuthenticationEvent  e) {
    logger.info("Autenticación successful ....");
    e.getAuthentication().getName();
} 

在securityConfig中添加了以下代码

@EnableWebSecurity
@Configuration
@Component
@Order
class SecurityConfig extends WebSecurityConfigurerAdapter {

.....

@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
    auth.authenticationEventPublisher(authenticationEventPublisher());
}   

@Bean
public DefaultAuthenticationEventPublisher authenticationEventPublisher() {
    return new DefaultAuthenticationEventPublisher();
}

}

但是在application-1上进行身份验证时,不会触发application-2中的'InteractiveAuthenticationSuccessEvent'。

有人可以指导我吗?

1 个答案:

答案 0 :(得分:0)

我已经使用Redis PubSub通过侦听从Application-1到Application-2的身份验证事件来解决我的问题。