已关闭。此问题需要details or clarity。当前不接受答案。
**想要改进此问题?**添加详细信息并通过editing this post阐明问题。
2天前关闭。
Improve this question
我想知道UserDetailsService下的InMemoryUserDetailsManager在Spring Security中存储数据的位置。我想知道像数据库一样它在哪里。
public UserDetailsService users() {
UserDetails user = User.builder()
.username(securityUser)
.password(passwordEncoder().encode(securityPassword))
.roles("USER")
.build();
UserDetails admin = User.builder()
.username(securityAdminUser)
.password(passwordEncoder().encode(securityAdminPassword))
.roles("USER", "ADMIN")
.build();
return new InMemoryUserDetailsManager(user, admin);
}
1条答案
按热度按时间h79rfbju1#
正如在评论中提到的,用户信息存储在
Map
的内存中,通过几种方法可以很容易地获得所需的信息。如果您希望打印正在设置的密码的编码(散列)版本,请尝试在启动时打印出来,如下所示:
确保
UserDetailsService
是一个@Bean
,并且您还可以将其注入到任何组件中,并查找用户以打印出散列密码用于测试。你可能最终想知道的是如何对密码进行编码并将其存储在数据库中,这可能是你自己建立的东西。
要在保存用户之前对密码进行编码,可以将
PasswordEncoder
公开为bean(将@Bean
添加到passwordEncoder()
方法中),并将其注入到用于创建用户的组件中,例如@PostMapping("/register")
这样的自定义@RestController
端点。最后,Spring Boot CLI有一个
encodepassword
命令。产出
通过这种方式,您实际上可以将密码存储在内存中(通常仅用于测试),但它们会像在数据库中一样进行哈希处理。