Spring 5 中的 .csrf() 方法现在位于哪个包中?

问题描述 投票:0回答:4

我正在尝试写一篇IT。

mockMvc.perform( post( "/my_endpoint" )
            .contentType( MediaType.APPLICATION_JSON )
            .header("Authorization", my_credentials)
            .with(csrf())
            .content( jsonPayload )
                )
            .andExpect( status().isOk() );

我需要导入

csrf()
静态方法,但是通常创建的包(org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors...)不再存在。

关于如何编写 csrf 保护以避免测试中出现

403
的一些新想法?

谢谢。

spring spring-boot integration-testing csrf
4个回答
0
投票

要使用 Spring Security 测试支持,您必须包含 spring-security-test-5.1.2.RELEASE.jar 作为项目的依赖项。 并在下面尝试一下:-

import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProce ssors.*;

mvc.perform(post("/").with(csrf()))

或者,

mvc.perform(post("/").with(csrf().asHeader()))

或者,

mvc.perform(post("/").with(csrf().useInvalidToken()))

0
投票

您可以按如下方式使用

csrf().csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse())

0
投票

我的回答是基于Spring Reactive。 春季启动:2.6.1

在 build.gradle 中添加以下条目

testImplementation 'org.springframework.security:spring-security-test'

然后,csrf()方法将可以从下面的导入中使用

import static org.springframework.security.test.web.reactive.server.SecurityMockServerConfigurers.csrf;

0
投票

对于Maven,你可以添加这个

<dependency>
                <groupId>org.springframework.security</groupId>
                <artifactId>spring-security-test</artifactId>
                <scope>test</scope>
</dependency>

在你的课堂上,你可以添加它来获取对 csrf() 的引用

import org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors

在你的函数中添加

SecurityMockMvcRequestPostProcessors.csrf()
© www.soinside.com 2019 - 2024. All rights reserved.