본문 바로가기
오류

[SpringSecurity] java.lang.IllegalArgumentException: There is no PasswordEncoder mapped for the id "null"

by 신방동불주먹 2023. 7. 20.

원인

 

SpringSecurity 5버전 이상부터는 PasswordEncoder를 처리를 하는데,

이때 PasswordEncoder를 처리하기위한 형식으로 pw가 저장되어있지 않기때문이다. 

 

- 기본이 bcrypt이다.
- SpringSecurity가 로그인 과정에서 어떤 Encoder를 쓸지는 database에 저장된 password의 prefix { Encoder명 }를 보고 결정한다.

- 따로 설정을하지않았으니, SpringSecurity가 prefix를 보고 Enocder형식을 정해야 하는데, 이것조처 설정이 되어있지 않아서 에러가 난것

 

 

해결 방법

securityconfig 에 빈을 등록한다. 

@Bean
public PasswordEncoder noOpPasswordEncoder(){
return NoOpPasswordEncoder.getInstance();
}