gpt4 book ai didi

java - SpringBoot @WebMvcTest 安全问题

转载 作者:搜寻专家 更新时间:2023-11-01 01:09:45 24 4
gpt4 key购买 nike

我有一个 spring rest mvc Controller ,它的 url 是“/public/rest/vehicle/get”。在我的安全配置中,我定义了对/public/rest 的任何请求都不需要身份验证。

    http.
csrf().disable()
.authorizeRequests()
.antMatchers("/home/**", "/**", "/css/**", "/js/**", "/fonts/**", "/images/**", "/public/rest/**","/login*","/signin/**","/signup/**").permitAll()
.antMatchers("/property/**").authenticated()
.and()
.formLogin().loginPage("/login").permitAll()
.and().httpBasic().disable();

当我启动我的应用程序并使用浏览器或任何其他方式提交请求时,此配置工作正常。现在,我有一个看起来像这样的测试类,

@RunWith(SpringRunner.class)
@WebMvcTest(VehicleController.class)
public class VehicleControllerTest {

@Autowired
private MockMvc mockMvc;

@MockBean
private VehicleService vehicleService;


@Test
public void getVehicle() throws Exception {
given(this.vehicleService.get(0)).
willReturn(new VehicleEquipmentDTO());
this.mockMvc.perform(get("/public/rest/vehicle/get").param("id","0"))
.andDo(print())
.andExpect(status().isOk());//.andExpect(content().string("Honda Civic"));
}}

现在,当我运行这个测试时,它说

java.lang.AssertionError: Status 
Expected :200
Actual :401

当我打印请求响应时,我看到它在提示是因为安全问题。 “错误消息 = 访问此资源需要完全身份验证”有什么想法为什么它不能使用我拥有的安全配置,以及强制它使用正确配置的解决方法是什么?提前致谢

最佳答案

终于找到原因了。由于WebMvcTest只是切片测试,所以不会进行安全配置。解决方法是像这样显式导入它,

@Import(WebSecurityConfig.class)

关于java - SpringBoot @WebMvcTest 安全问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45116833/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com