Java Spring MVC REST+;OAuth&;CSRF

Java Spring MVC REST+;OAuth&;CSRF,java,spring,rest,spring-mvc,Java,Spring,Rest,Spring Mvc,我试图用Spring4.1.6.0版本构建REST服务,但遇到了许多问题 问题#1 测试时,我无法关闭CSRF。这意味着我的POST only“/users/register”映射需要CSRF令牌。它不应该是必需的,实际上您无法获得令牌,因为这里只有POST是有效的。 其他测试配置文件可以工作。 使用Spring Boot运行服务器使用我的生产配置,这将禁用CSRF。禁用csrf的生产配置在测试时运行,通过在其上设置断点进行确认 第2期 使用正确的@Order(n)注释启用2个WebSecuri

我试图用Spring4.1.6.0版本构建REST服务,但遇到了许多问题

问题#1

测试时,我无法关闭CSRF。这意味着我的POST only“/users/register”映射需要CSRF令牌。它不应该是必需的,实际上您无法获得令牌,因为这里只有POST是有效的。 其他测试配置文件可以工作。 使用Spring Boot运行服务器使用我的生产配置,这将禁用CSRF。禁用csrf的生产配置在测试时运行,通过在其上设置断点进行确认

第2期

使用正确的@Order(n)注释启用2个WebSecurity配置适配器类(1个用于生产,1个用于测试覆盖)似乎可以将MVC恢复为HTML表单,而不是REST,例如,在未经身份验证的情况下,我得到的是302,而不是401个请求响应

第三期

放弃配置并在测试中手动添加CSRF令牌也不起作用。我仍然得到“未找到预期的CSRF令牌。您的会话是否已过期?”这是我的测试:

String registrationRequest=this.json(新注册请求(“Robin”、“Elvin”、“robinelvin”、“robpass”));
CsrfToken CsrfToken=httpsessionsrftokenrepository.generateToken(new MockHttpServletRequest());
mockMvc.perform(post(“/users/register”)
.header(csrfToken.getHeaderName(),csrfToken.getToken())
.accept(MediaType.APPLICATION_JSON)
.contentType(contentType)
.内容(注册请求)
).andDo(print())
.andExpect(status().isCreated());
所以我在这个问题上兜圈子,花了一整天的时间试图让一个简单的测试工作起来。我找不到任何关于如何设置和测试我试图实现的目标的文档

谁能给我指出正确的方向吗