Spring mvc @WithMockUser是否忽略用户名、密码字段?

Spring mvc @WithMockUser是否忽略用户名、密码字段?,spring-mvc,spring-security,spring-boot,spring-test-mvc,Spring Mvc,Spring Security,Spring Boot,Spring Test Mvc,我使用@WithMockUser在一个简单的SpringBootWeb服务中测试一个由basic auth保护的控制器方法。我的注释如下所示: @WithMockUser(username = 'admin', password = 'mypassword', roles = ['ADMIN']) 但是,似乎忽略了用户名和密码字段。即使我指定了错误的用户名或密码,测试也会通过。但是,角色字段似乎已被使用,并且测试失败,提供了无效的角色 也许我误解了此注释的作用,但我是否应该使用它来验证提供给安

我使用
@WithMockUser
在一个简单的SpringBootWeb服务中测试一个由basic auth保护的控制器方法。我的注释如下所示:

@WithMockUser(username = 'admin', password = 'mypassword', roles = ['ADMIN'])
但是,似乎忽略了用户名和密码字段。即使我指定了错误的用户名或密码,测试也会通过。但是,角色字段似乎已被使用,并且测试失败,提供了无效的角色

也许我误解了此注释的作用,但我是否应该使用它来验证提供给安全方法的不正确凭据的行为

谢谢

--john

如果您使用的是Spring MVC测试(即,
MockMvc
),您将执行以下操作:

mvc.perform(get(“/”)与(httpBasic(“用户”、“密码”))/。。。
这在Spring安全参考手册的章节中有记录


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

不,您不应该这样做。它所做的是用给定的用户重新填充
SecurityContext
。它不允许您测试任何其他内容。如果需要,需要使用Springs模拟MVC测试支持进行系统测试或完全集成测试,包括手动注册安全配置。