@WithMockUser会忽略用户名和密码字段吗?

时间:2016-07-25 04:14:46

标签: spring-mvc spring-security spring-boot spring-test-mvc

我使用@WithMockUser在简单的Spring启动Web服务中测试使用基本身份验证保护的控制器方法。我的注释看起来像:

@WithMockUser(username = 'admin', password = 'mypassword', roles = ['ADMIN'])

但是,似乎忽略了用户名和密码字段。即使我指定了错误的用户名或密码,测试也会通过。但是,角色字段似乎确实被使用,并且测试失败且提供了无效的角色。

也许我误解了这个注释的作用,但是我应该能够用它来验证提供给安全方法的错误凭据的行为吗?

谢谢!

- 约翰

1 个答案:

答案 0 :(得分:0)

如果您正在使用 Spring MVC Test (即MockMvc),您将执行以下操作:

mvc.perform(get("/").with(httpBasic("user","password"))) // ...

这在Spring Security参考手册的Testing HTTP Basic Authentication部分中有记录。

如果您已将测试配置为使用嵌入式Servlet容器启动Spring Boot,则可以使用支持“基本HTTP身份验证(使用用户名和密码)”的Spring Boot TestRestTemplate