小编Sal*_*Sal的帖子

具有自定义用户的SpringBootTest模拟身份验证主体不起作用

我正在使用Spring Boot 1.4.2,并且是Spring Boot的新手。我有一个身份验证筛选器,用于在用户登录时设置当前用户信息。在控制器的建议中,我进行了调用以获取当前userId,如下所示:

public static String getCurrentUserToken(){
    return ((AuthenticatedUser) SecurityContextHolder.getContext().getAuthentication().getPrincipal()).getUserId();
}
Run Code Online (Sandbox Code Playgroud)

这是我的自定义AuthenticatedUser:

public class AuthenticatedUser implements Serializable {

private final String userName;
private final String userId;
private final String sessionId;

public AuthenticatedUser(String userName, String userId, String sessionId) {
    super();
    this.userName = userName;
    this.userId = userId;
    this.sessionId = sessionId;
}

public String getUserName() {
    return userName;
}

public String getUserId() {
    return userId;
}

public String getSessionId() {
    return sessionId;
}
Run Code Online (Sandbox Code Playgroud)

}

一切正常。但是,该筛选器在集成测试中不起作用,我需要模拟当前用户。我搜索了很多关于如何模拟用户的内容,但没有一个对我有帮助。我终于找到了可能与我想要的指南接近的指南:https : //aggarwalarpit.wordpress.com/2017/05/17/mocking-spring-security-context-for-unit-testing/ 以下是我的测试课程遵循该准则:

@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = …
Run Code Online (Sandbox Code Playgroud)

java authentication mockito spring-boot

4
推荐指数
1
解决办法
5359
查看次数

标签 统计

authentication ×1

java ×1

mockito ×1

spring-boot ×1