首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SpringBoot2 + Webflux - WebTestClient总是返回“401Authorized”

SpringBoot2 + Webflux - WebTestClient总是返回“401Authorized”
EN

Stack Overflow用户
提问于 2019-10-12 04:26:44
回答 2查看 3K关注 0票数 2

我正在尝试使用Springboot2.1.8和Junit5下的WebTestClient编写一些测试

它总是返回< 401 Unauthorized,但实际上它根本没有去控制器或服务层。这可能与spring安全有关,只是我的猜测。

该项目是使用JHipster生成的。这是build.gradle

-UimApiServiceImplTest.java

代码语言:javascript
复制
...


@ExtendWith(SpringExtension.class)
@WebFluxTest(controllers = UserGuidController.class)
@ContextConfiguration(classes = {UserGuidController.class, UimApiServiceImpl.class})

public class UimApiServiceImplTest {

    @Autowired
    private WebTestClient webTestClient;

    @Test
    public void testGetGuidByEmail() {

        webTestClient.get()
            .uri("/uimapi/getguid/{email}", "someone@xxxxx.com")
            .accept(MediaType.APPLICATION_JSON_UTF8)
            .exchange()
            .expectStatus().isOk();
    }
}

-UserGuidController.java

代码语言:javascript
复制
...
@RestController
@RequestMapping("/uimapi")
public class UserGuidController {

    @Autowired
    private UimApiServiceImpl uimApiService;

    private static final Logger logger = LoggerFactory.getLogger(UserGuidController.class);

    @GetMapping("/getguid/{email}")
    public String getUserGuid(@PathVariable String email) {
        return uimApiService.getUserGuid(email);
    }
}
EN

回答 2

Stack Overflow用户

发布于 2020-07-31 22:58:56

对于webflux,可以通过排除ReactiveSecurityAutoConfiguration类来禁用SecurityAutoconfiguration,如下所示:

代码语言:javascript
复制
@WebFluxTest(controllers = YourController.class,excludeAutoConfiguration = {ReactiveSecurityAutoConfiguration.class}))
票数 7
EN

Stack Overflow用户

发布于 2019-10-15 20:40:21

当在类路径中找到这个依赖项时,Spring boot会在默认情况下自动启用所有端点上的安全性。

您可以选择通过更新主类来禁用此默认配置:

代码语言:javascript
复制
@SpringBootApplication(exclude = { SecurityAutoConfiguration.class, ManagementWebSecurityAutoConfiguration.class })

这将禁用所有端点上的安全性。

如果您希望控制要从中删除安全性的端点,您可以使用下面的代码和符合您要求的更新来实现此目的:

代码语言:javascript
复制
@Configuration
public class SecurityConfiguration {

  @Bean
  public SecurityWebFilterChain securityFilterChain(ServerHttpSecurity http) {
    http.authorizeExchange().anyExchange().permitAll();
    return http.build();
  }
}
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58348038

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档