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\" 提交一个 POST 请求,其中包含用户名 \"user\"、密码 \"password\" 以及一个有效的 CSRF 令牌:
📄️ 模拟 HTTP Basic 认证
虽然一直以来都可以通过HTTP Basic进行身份验证,但记住请求头名称、格式并对值进行编码的过程有些繁琐。现在,我们可以使用Spring Security的httpBasic RequestPostProcessor来实现这一功能。例如,以下代码片段:
📄️ 模拟 OAuth2
在 OAuth 2.0 的场景下,之前讨论的基本原则依然适用:最终取决于你的被测方法期望在 SecurityContextHolder 中获取到什么内容。
📄️ 模拟登出
虽然使用标准的Spring MVC测试相当简单,但你可以利用Spring Security的测试支持来简化登出功能的测试。例如,以下登出请求后处理器将使用有效的CSRF令牌向\"/logout\"提交一个POST请求: