我正在使用带有OAuth2的Spring Security。除登录成功和失败处理程序外,一切正常。

像在 Spring 网络安全中一样,OAuth2没有明确定义成功和失败处理程序 Hook 来更新数据库并相应地设置响应。

我需要扩展什么过滤器,它在Spring Security过滤器链中的位置应该是什么?

最佳答案

successHandler方法指定failureHandleroauth2login:

@Configuration
@EnableWebSecurity
class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Value("${successUrl}")
    private String successUrl;
    @Value("${failureUrl}")
    private String failureUrl;

    @Override
    protected void configure(HttpSecurity http) throws Exception {

        http
            .oauth2Login()
                .successHandler(successHandler())
                .failureHandler(failureHandler());
    }

    @Bean
    SimpleUrlAuthenticationSuccessHandler successHandler() {
        return new SimpleUrlAuthenticationSuccessHandler(successUrl);
    }

    @Bean
    SimpleUrlAuthenticationFailureHandler failureHandler() {
        return new SimpleUrlAuthenticationFailureHandler(failureUrl);
    }
}
经过Spring Security 5.0.6测试

10-07 22:47