【发布时间】:2020-05-15 13:05:18
【问题描述】:
在运行时,当我像这样检索经过身份验证的用户时:
SecurityContextHolder.getContext().getAuthentication().getPrincipal()
我从我的应用程序模型中得到User:
test.package.model.User
当我在测试期间检索用户时,我从 UserDetails 获取用户:
org.springframework.security.core.userdetails.User
我正在使用 MockMvc 作为经过身份验证的用户测试我的 bean。 在测试期间,我正在使用 InMemoryUserDetailsManager:
@SuppressWarnings("unchecked")
private Collection<UserDetails> users = Collections.emptyList();
@Bean
@Primary
public UserDetailsService userDetailsService() {
/** User from application model, not userDetails.User type */
User user = new User("bob")
users = Arrays.asList(user);
InMemoryUserDetailsManager inMemoryUserDetailsManager = new InMemoryUserDetailsManager(users);
return inMemoryUserDetailsManager;
}
public Collection<UserDetails> getUsers() {
return users;
}
我在测试过程中的请求是这样的:
@WithUserDetails("bob")
public void showUser() throws Exception {
this.mockMvc.perform(get("/user"))
.andDo(print());
}
我想在运行时和测试时保持一致。 我应该使用哪种用户类型?为什么?
【问题讨论】:
标签: spring testing spring-security runtime