SpringBoot2 + Webflux - WebTestClient 总是返回“401 UNAUTHORIZED”
Posted
技术标签:
【中文标题】SpringBoot2 + Webflux - WebTestClient 总是返回“401 UNAUTHORIZED”【英文标题】:SpringBoot2 + Webflux - WebTestClient always returns “401 UNAUTHORIZED” 【发布时间】:2020-02-09 09:10:02 【问题描述】:我正在尝试在 Springboot 2.1.8 和 Junit5 下使用 WebTestClient 编写一些测试
它总是返回
该项目是使用 JHipster 生成的。这是build.gradle
-----------------UimApiServiceImplTest.java-------------------
...
@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--------
...
@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);
【问题讨论】:
请分享你的 pom 文件 我已经在上面更新了。非常感谢 【参考方案1】:对于 webflux,您可以通过排除 ReactiveSecurityAutoConfiguration 类来禁用 SecurityAutoconfiguration,如下所示:
@WebFluxTest(controllers = YourController.class,excludeAutoConfiguration = ReactiveSecurityAutoConfiguration.class))
【讨论】:
效果很好,谢谢!这应该被标记为解决方案...【参考方案2】:您的 gradle 依赖项中有 implementation "org.springframework.boot:spring-boot-starter-security
"。默认情况下,当在类路径中找到此依赖项时,Spring Boot 会自动在所有端点上启用安全性。
您可以选择通过更新主类来禁用此默认配置:
@SpringBootApplication(exclude = SecurityAutoConfiguration.class, ManagementWebSecurityAutoConfiguration.class )
这将禁用所有端点的安全性。
如果您想控制要从中删除安全性的端点,您可以使用以下代码和符合您要求的更新来做到这一点:
@Configuration
public class SecurityConfiguration
@Bean
public SecurityWebFilterChain securityFilterChain(ServerHttpSecurity http)
http.authorizeExchange().anyExchange().permitAll();
return http.build();
【讨论】:
非常感谢您的帮助!以上是关于SpringBoot2 + Webflux - WebTestClient 总是返回“401 UNAUTHORIZED”的主要内容,如果未能解决你的问题,请参考以下文章
SpringBoot2 + Webflux - WebTestClient 总是返回“401 UNAUTHORIZED”