m4r*_*tin 6 java spring spring-mvc spring-security
我有一个使用Spring Security保护的Spring MVC Web应用程序,我正在编写测试.我很难在SpringContextHolder中获取Spring Security检索到的一个(自定义)用户.一旦我的用户被"插入"(java配置),其中:
auth.inMemoryAuthentication().getUserDetailsService().createUser(myCustomUser);
Run Code Online (Sandbox Code Playgroud)
然后,我可以创建相关的令牌(UsernamePasswordAuthenticationToken)并要求Spring使用此令牌对我的用户进行身份验证.问题是Spring不检索自定义用户实例,而是检索其User类的实例.当Spring在以下方法中查找这样的用户时(来自Spring的InMemoryUserDetailsManager):
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
UserDetails user = users.get(username.toLowerCase());
if (user == null) {
throw new UsernameNotFoundException(username);
}
return new User(user.getUsername(), user.getPassword(), user.isEnabled(), user.isAccountNonExpired(),
user.isCredentialsNonExpired(), user.isAccountNonLocked(), user.getAuthorities());
}
Run Code Online (Sandbox Code Playgroud)
它使用我的配置提供的详细信息实例化一个新用户.
我没有看到让InMemoryUserDetailsManager直接返回通过"getUserDetailsService(..createUser"调用发送给他的内容的问题,但是肯定有一个......无论如何,我可能在这里做错了,任何想法?
像建议的那样,我最终编写了一个自定义InMemoryUserDetailsManager,我提供了Spring Security配置.
对于任何想知道的人来说,这似乎是唯一的方法.
| 归档时间: |
|
| 查看次数: |
1370 次 |
| 最近记录: |