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

Posted

技术标签:

【中文标题】如何在 OAuth2 WebFlux 中设置成功和失败处理程序【英文标题】:How to set success and failure handlers in OAuth2 WebFlux 【发布时间】:2020-01-16 20:37:52 【问题描述】:

在 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 版本中使这些可配置?我应该为此创建一张票吗?而且,目前,有什么方法可以覆盖这些?

【问题讨论】:

【参考方案1】:

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

【讨论】:

以上是关于如何在 OAuth2 WebFlux 中设置成功和失败处理程序的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Spring 5 WebFlux WebClient 中设置超时

如何使用WebFlux在Spring Boot 2中设置登录页面?

如何在 Spring Webflux / WebClient 中设置事件循环池大小?

在 Spring WebFlux webclient 中设置超时

如何在 Spring Webflux 中自定义 Oauth2 的登录页面?

如何在 OAuth2 资源服务器中设置自定义 403 响应?