首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >添加spring安全后WebMVC测试失败,如何一次性修复?

添加spring安全后WebMVC测试失败,如何一次性修复?
EN

Stack Overflow用户
提问于 2019-08-14 22:10:55
回答 1查看 315关注 0票数 1

我刚刚在Spring Boot应用程序中添加了spring-boot-starter-securityspring-security-test。我想保护控制器和方法。

现在我所有的控制器测试(@WebMvcTest)都失败了。似乎所有的GET方法都以401失败,所有的POST/DELETE/PUT都以403失败。

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-15 00:59:09

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

您可以禁用( disable CSRF protection ),尽管这是一种重要的防御机制,因此通常不建议禁用。Spring Security在他们的参考文档中有一些关于如何确定when CSRF protection is necessary的信息。

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

代码语言:javascript
复制
this.mockMvc.perform(post("/").with(csrf()))

其中csrf()来自SecurityMockMvcRequestPostProcessors

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57496406

复制
相关文章

相似问题

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