如何在 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
下。您需要更新依赖项。
在 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
下。您需要更新依赖项。