gpt4 book ai didi

java - 添加 Spring Security 后 WebMVC 测试失败,如何一次性修复?

转载 作者:行者123 更新时间:2023-11-30 05:31:16 25 4
gpt4 key购买 nike

我刚刚将 spring-boot-starter-securityspring-security-test 添加到我的 Spring Boot 应用程序中。我想保护 Controller 和方法。

现在我所有的 Controller 测试 (@WebMvcTest) 都失败了。似乎所有 GET 方法都会失败并返回 401,所有 POST/DELETE/PUT 都会失败并返回 403。

我可以使用 @WithMockUser 轻松修复 401。

重新运行所有测试的最简单方法是什么?我不想在这些测试中考虑安全性。稍后我想添加特定的安全测试。

最佳答案

Spring Security 会自动为每个 POST、DELETE 和 PUT 请求添加 CSRF 防御,因此这就是您看到 403 的原因。

您可以disable CSRF protection ,尽管这是一个重要的防御机制,因此通常不建议禁用。 Spring Security 在其引用文档中提供了一些有关如何确定 when CSRF protection is necessary 的信息。 .

相反,您可以使用 Spring Security add in a test CSRF token to your tests通过配置 Mock Mvc 实例:

this.mockMvc.perform(post("/").with(csrf()))

其中csrf()来自SecurityMockMvcRequestPostProcessors

请注意,您的测试失败的原因与 POST 等在您的应用程序中失败的原因相同 - 它们也将是 expecting a CSRF token as part of the request .

关于java - 添加 Spring Security 后 WebMVC 测试失败,如何一次性修复?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57496406/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com