java - 如何更改 OAuth2ClientAuthenticationProcessingFilter 的 successHandler?

标签 java spring-boot oauth-2.0 spring-security-oauth2

我正在使用@EnableOAuth2Sso。但我需要更改 successHandler,以便我可以在登录后更改重定向。

我该怎么做?

我追踪了代码的路径:

@EnableOAuth2Sso ->
  OAuth2SsoCustomConfiguration ->
   SsoSecurityConfigurer ->
    OAuth2ClientAuthenticationConfigurer ->
     OAuth2ClientAuthenticationProcessingFilter ->
      AbstractAuthenticationProcessingFilter ->
       successHandler

该路径中是否有任何地方可以让我更改 successHandler

也许可以在设置后访问过滤器,并修改OAuth2ClientAuthenticationProcessingFilter

最佳答案

您需要创建自己的 OAuth2ClientAuthenticationProcessingFilter 实例并将此过滤器添加到过滤器链中。

下面给出的是片段: `

private OAuth2ClientAuthenticationProcessingFilter oauth2SsoFilter() {
        ApplicationContext applicationContext = this.getApplicationContext();
        OAuth2SsoProperties sso = applicationContext.getBean(OAuth2SsoProperties.class);
        OAuth2RestOperations restTemplate = applicationContext.getBean(UserInfoRestTemplateFactory.class)
            .getUserInfoRestTemplate();
        ResourceServerTokenServices tokenServices = applicationContext.getBean(ResourceServerTokenServices.class);
        OAuth2ClientAuthenticationProcessingFilter filter = new OAuth2ClientAuthenticationProcessingFilter(sso
            .getLoginPath());
        filter.setRestTemplate(restTemplate);
        filter.setTokenServices(tokenServices);
        filter.setApplicationEventPublisher(applicationContext);
        filter.setAuthenticationSuccessHandler(new YourOwnAuthenticationSuccessHandler());
        return filter;
    }

可以通过以下方式将过滤器添加到过滤器链:

http.addFilterBefore(oauth2SsoFilter(), BasicAuthenticationFilter.class);

关于java - 如何更改 OAuth2ClientAuthenticationProcessingFilter 的 successHandler?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49121916/

相关文章:

ios - 同一应用的不同 oauth2 native /网络客户端 ID

azure - 找出 HPC 命令行实用程序的 (Azure) OAuth2 授权流程

java - 为什么使用 PDF 文本提取器从 PDF 中提取的文本是分散的和非结构化的?

java - 如何通过ArrayList或ArrayList获取表的值

java jvm内存分配

php - php 中的 OAuth 2.0 使用 curl

java - java中的@符号是什么意思?

java - 如何在 Gradle 中生成元模型?

java - 如何从 MethodArgumentNotValidException 类中提取字段名称和错误消息?

java - 返回响应后,RequestContextHolder 中设置的属性丢失