SecurityMockMvcRequestPostProcessors
要使用 Spring Security 的 RequestPostProcessor
实现,请使用以下静态导入:
- Java
- Kotlin
import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.*;
import org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.*
节总结
📄️ 模拟用户
通常希望以特定用户身份运行测试。有两种简单的方法来填充用户:
📄️ 模拟 CSRF
在测试任何非安全的 HTTP 方法并使用 Spring Security 的 CSRF 保护时,必须在请求中包含一个有效的 CSRF 令牌。要将有效的 CSRF 令牌指定为请求参数,请使用 CSRF RequestPostProcessor,如下所示:
📄️ 模拟表单登录
你可以轻松地创建一个请求来测试基于表单的身份验证,使用 Spring Security 的测试支持。例如,下面的 formLogin RequestPostProcessor 将向 \"/login\" 发送一个带有用户名 \"user\"、密码 \"password\" 和有效 CSRF 令牌的 POST 请求:
📄️ 模拟 HTTP Basic
虽然一直可以通过 HTTP Basic 进行身份验证,但记住头部名称、格式以及对值进行编码有点繁琐。现在可以使用 Spring Security 的 httpBasic RequestPostProcessor 来完成这一操作。例如,下面的代码片段:
📄️ 模拟 OAuth2
当涉及到 OAuth 2.0 时,前面提到的原则仍然适用:最终,这取决于你的测试方法期望在 SecurityContextHolder 中存在什么。
📄️ 模拟登出
虽然使用标准的 Spring MVC Test 相对简单,但你可以使用 Spring Security 的测试支持来使登出测试更加容易。例如,下面的登出 RequestPostProcessor 会向 \"/logout\" 发送一个带有有效 CSRF 令牌的 POST 请求: