簡體   English   中英

Spring Transfer SecurityContext用於集成測試

[英]Spring transfer SecurityContext for Integration testing

我想測試我的REST端點。 在我的REST方法中,有一些基於SecurityContext的過濾器。 當我在測試類中設置SecurityContext並調用其余方法時,SecurityContext被刪除。 僅當我在REST方法中創建SecurityContext時,它才起作用。 是否有可能傳遞上下文?

SecurityContext securityContext = new SecurityContextImpl();
    securityContext.setAuthentication(authentication);
    SecurityContextHolder.setContext(securityContext);
    // is here User ...
    .mockMvc.perform(get("/test"...)

RestController:

public ResponseEntity<...> getTest(){
 // is now anonymus
 SecurityContextHolder.getContext().getAuthentication().getPrincipal();
}

謝謝

您可以使用defaultRequest方法設置對同一測試類中的所有測試重新使用的身份驗證:

@BeforeClass
public void setUp()
{
    mockMvc = MockMvcBuilders.webAppContextSetup(wac).defaultRequest(get("/").with(authentication(authentication))).apply(springSecurity()).build();
}

您需要的靜態導入為:

import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.authentication;
import static org.springframework.security.test.web.servlet.setup.SecurityMockMvcConfigurers.springSecurity;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM