gpt4 book ai didi

java - 用于测试的 Spring Boot 设置安全性

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:50:43 24 4
gpt4 key购买 nike

我无法在我的测试中正确配置安全性。我的网络安全配置:

@Configuration
@EnableWebMvcSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/api/**").hasRole("USER")
.and()
.httpBasic()
;
}
}

还有我的测试类:

@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration
@ContextConfiguration(classes = {Application.class, AppConfig.class, WebMvcConfig.class, WebSecurityConfig.class})
@WebAppConfiguration
public class TestControllerTest {

@Autowired
private WebApplicationContext wac;

private MockMvc mockMvc;

@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
this.mockMvc = webAppContextSetup(wac).dispatchOptions(true).build();
}

@Test
public void getTest() throws Exception {
mockMvc
.perform(get("/api/test"))
.andExpect(status().isForbidden())
;
}
}

我得到一个 404 状态码,这意味着安全层没有执行,所以它在我的测试类中配置不正确。我试图将类从 @ContextConfiguration 切换到 @SpringApplicationConfiguration 但没有成功。

最佳答案

对您的代码进行以下修改:

   @Autowired
private FilterChainProxy filterChainProxy;


@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
this.mockMvc = webAppContextSetup(wac).dispatchOptions(true).addFilters(filterChainProxy).build();
}

关于java - 用于测试的 Spring Boot 设置安全性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23335200/

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