小编Jus*_*der的帖子

Spring Security 5在Application Runner中调用OAuth2 Secured API会导致IllegalArgumentException

给定以下代码,是否可以在应用程序运行程序中调用受客户端凭据保护的API?

@Bean
public ApplicationRunner test(
    WebClient.Builder builder,
    ClientRegistrationRepository clientRegistrationRepo, 
    OAuth2AuthorizedClientRepository authorizedClient) {
        return args -> {
            try {
                var oauth2 =
                    new ServletOAuth2AuthorizedClientExchangeFilterFunction(
                        clientRegistrationRepo,
                        authorizedClient);
                oauth2.setDefaultClientRegistrationId("test");
                var response = builder
                    .apply(oauth2.oauth2Configuration())
                    .build()
                    .get()
                    .uri("test")
                    .retrieve()
                    .bodyToMono(String.class)
                    .block();
                log.info("Response - {}", response);
            } catch (Exception e) {
                log.error("Failed to call test.", e);
            }
        };
    }
Run Code Online (Sandbox Code Playgroud)

该代码由于以下原因而失败:

java.lang.IllegalArgumentException: request cannot be null
Run Code Online (Sandbox Code Playgroud)

全栈,

java.lang.IllegalArgumentException: request cannot be null
    at org.springframework.util.Assert.notNull(Assert.java:198) ~[spring-core-5.1.5.RELEASE.jar:5.1.5.RELEASE]
    at org.springframework.security.oauth2.client.web.HttpSessionOAuth2AuthorizedClientRepository.loadAuthorizedClient(HttpSessionOAuth2AuthorizedClientRepository.java:47) ~[spring-security-oauth2-client-5.1.4.RELEASE.jar:5.1.4.RELEASE]
    at org.springframework.security.oauth2.client.web.reactive.function.client.ServletOAuth2AuthorizedClientExchangeFilterFunction.populateDefaultOAuth2AuthorizedClient(ServletOAuth2AuthorizedClientExchangeFilterFunction.java:364) ~[spring-security-oauth2-client-5.1.4.RELEASE.jar:5.1.4.RELEASE]
    at org.springframework.security.oauth2.client.web.reactive.function.client.ServletOAuth2AuthorizedClientExchangeFilterFunction.lambda$null$2(ServletOAuth2AuthorizedClientExchangeFilterFunction.java:209) ~[spring-security-oauth2-client-5.1.4.RELEASE.jar:5.1.4.RELEASE]
    at org.springframework.web.reactive.function.client.DefaultWebClient$DefaultRequestBodyUriSpec.attributes(DefaultWebClient.java:234) …
Run Code Online (Sandbox Code Playgroud)

java spring-security spring-boot spring-webflux

7
推荐指数
1
解决办法
838
查看次数

有没有一种方法可以在Java 8中使用Streams合并两个for循环?

我有两个列表,其中一个是String类型的,另一个是某个实体对象的。如何遍历这两个列表或使用Java 8比较它

List<Admin> admin= new ArrayList<>();

for (Admin ah : subProducers) {
    for (String value : values) {
        if (ah.getFirstName().contains(value) || ah.getLastName().contains(value)) {
            admin.add(ah);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我目前正在使用for循环来验证该条件,但找不到使用Java 8流将其组合的更好的方法。

java java-8 java-stream

4
推荐指数
1
解决办法
109
查看次数

无法将.txt文件移动到Java中的存档文件夹

我需要将所有以.txt结尾的文件移动到存档文件夹中。

我有以下代码,但是if (sourcepath.endsWith(".txt"))不验证文件扩展名。

      File directory = new File("Archive");
      System.out.println((System.getProperty("user.dir")));
      File directory1 = new File (System.getProperty("user.dir"));
      File[] files = directory1.listFiles();
      if (! directory.exists()) {
            directory.mkdir();
            for(File f : files ) {
                   Path sourcePath = Paths.get(f.getName());
                   System.out.println(sourcePath);
                   if (sourcePath.endsWith(".txt")){   // Not validating
                       System.out.println(sourcePath.endsWith(extension));
                       Files.move(sourcePath, Paths.get("Archive"));
                   }
            }
            System.out.println("Clearing Folder.....All Files moved to Archive Directory");
      }
Run Code Online (Sandbox Code Playgroud)

预期产量:

C:\Users\harsshah\workspace\FFPreBatchValidation
.classpath
.project
.settings
bin
kjnk.txt
src
Run Code Online (Sandbox Code Playgroud)

kjnk.txt应移至存档文件夹

java

0
推荐指数
1
解决办法
56
查看次数