如何在 OAuth2 WebFlux 中设置成功和失败处理程序

How to set success and failure handlers in OAuth2 WebFlux

在 Spring Web(非反应式)中,我们可以为 oauth2login 设置成功和失败处理程序,如下所示:

http.oauth2Login()
    .successHandler(oauth2AuthenticationSuccessHandler)
    .failureHandler(oauth2AuthenticationFailureHandler)

但是在WebFlux中,我们没有这些方法。当我查看 ServerHttpSecurity.configure 时,我发现处理程序是硬编码的:

protected void configure(ServerHttpSecurity http) {

    ...

    RedirectServerAuthenticationSuccessHandler redirectHandler = new RedirectServerAuthenticationSuccessHandler();

    authenticationFilter.setAuthenticationSuccessHandler(redirectHandler);
    authenticationFilter.setAuthenticationFailureHandler(new ServerAuthenticationFailureHandler() {
        @Override
        public Mono<Void> onAuthenticationFailure(WebFilterExchange webFilterExchange,
                AuthenticationException exception) {
            return Mono.error(exception);
        }
    });

    ...
}

我们是否计划在不久的将来 Spring 版本中实现这些配置?我应该为此创建一张票吗?而且,现在,有什么方法可以覆盖这些?

自 Spring 版本 5.2 以来,有一种方法可以设置身份验证成功和失败处理程序。 ServerHttpSecurity。在 OAuth2LoginSpec 下。您需要更新依赖项。