Spring Boot OAuth成功登录监听器未触发

使用Spring Boot" title="Spring Boot">Spring Boot-在通过GitHub OAuth成功进行身份验证之后,不会触发Audit侦听器。

public class AuthenticationListener implements ApplicationListener<InteractiveAuthenticationSuccessEvent> {

@Override

public void onApplicationEvent(final InteractiveAuthenticationSuccessEvent event) {

System.out.println("+++++++ ================ ------------");

}

}

我需要在其他地方注册吗?我已经尝试按照建议的其他方法在Stackoverflow上的哪个位置创建@Bean,但这没有什么区别。

完整代码https://github.com/DashboardHub/PipelineDashboard/tree/feature/178-login-

github

SecurityConfig类

@Configuration

public class SecurityConfig extends WebSecurityConfigurerAdapter {

@Autowired

OAuth2ClientContext oauth2ClientContext;

@Override

protected void configure(HttpSecurity http) throws Exception {

http.antMatcher("/**")

.authorizeRequests()

.antMatchers("/", "/login**", "/webjars/**").permitAll()

.anyRequest().authenticated()

.and()

.formLogin()

.loginPage("/login")//.failureUrl("/login?error")

.permitAll()

.and().logout().logoutSuccessUrl("/").permitAll()

.and().addFilterBefore(ssoFilter(), BasicAuthenticationFilter.class)

;

}

@Bean

@ConfigurationProperties("security.oauth2")

ClientResourcesConfig github() {

return new ClientResourcesConfig();

}

private Filter ssoFilter() {

CompositeFilter filter = new CompositeFilter();

List<Filter> filters = new ArrayList<>();

filters.add(ssoFilter(this.github(), "/login/github"));

filter.setFilters(filters);

return filter;

}

private Filter ssoFilter(ClientResourcesConfig client, String path) {

OAuth2ClientAuthenticationProcessingFilter githubFilter = new OAuth2ClientAuthenticationProcessingFilter(

path);

OAuth2RestTemplate githubTemplate = new OAuth2RestTemplate(client.getClient(),

oauth2ClientContext);

githubFilter.setRestTemplate(githubTemplate);

githubFilter.setTokenServices(new UserInfoTokenServices(

client.getResource().getUserInfoUri(), client.getClient().getClientId()));

return githubFilter;

}

}

回答:

通过将默认的ApplicationEventPublisher注入到您的安全配置Bean中,我可以正常工作。然后将其设置为处理过滤器上的应用程序事件发布者:

@Autowired

private ApplicationEventPublisher applicationEventPublisher;

...

githubFilter.setApplicationEventPublisher(applicationEventPublisher);

由于某些原因,默认情况下,筛选器上的应用程序事件发布者是NullEventPublisher。

以上是 Spring Boot OAuth成功登录监听器未触发 的全部内容, 来源链接: utcz.com/qa/421438.html

回到顶部