InMemoryUserDetailsManager
What is?
- 애플리케이션 구동 시에 메모리에 사용자 정보를 로드하여 관리
- 사용자 정보의 CRUD 작업을 지원
- 테스트나 간단한 애플리케이션에서 사용하기에 적합
- 코드에 사용자 정보를 저장하는 것은 매우 위험함!
방식
- InMemoryUserDetailsManager를 반환한다.
- UserDetails을 User을 통해서 생성한다.
- UserDetails을 생성 시 passwordEncoder가 필요하다.
config1 - 기본 passwordEncoder 사용
- SpringSecurityConfiguration.java
@Bean
public InMemoryUserDetailsManager userDetailsService() {
UserDetails admin = User.withDefaultPasswordEncoder()
.username("admin")
.password("12345")
.authorities("admin")
.build();
UserDetails user = User.withDefaultPasswordEncoder()
.username("user")
.password("12345")
.authorities("read")
.build();
return new InMemoryUserDetailsManager(admin, user);
}
config2 - passwordEncoder @Bean으로 등록해서 사용
@Bean
public InMemoryUserDetailsManager userDetailsService() {
UserDetails admin = User.withUsername("admin")
.username("admin")
.password("12345")
.authorities("admin")
.build();
UserDetails user = User.withUsername("user")
.password("12345")
.authorities("read")
.build();
return new InMemoryUserDetailsManager(admin, user);
}
@Bean
public PasswordEncoder passwordEncoder() {
return NoOpPasswordEncoder.getInstance();
}
- 다음으로 만든 UserDetails을 이용해서 로그인을 해보자!