728x90
에러코드
Description:
Parameter 2 of constructor in ....
MemberService required a bean of type 'org.springframework.security.crypto.password.
PasswordEncoder' that could not be found.
Action:
Consider defining a bean of type 'org.springframework.security.crypto.password.PasswordEncoder'
in your configuration.
Process 'command 'C:/Users/nyong/.jdks/azul-17.0.4.1/bin/java.exe'' finished with non-zero exit value 1
문제
Spring Security를 이용한 JWT 인증을 진행하는 도중 발생한 에러다
애플리케이션 스타트가 실패한다
원인
에러코드를 보면 PasswordEncoder가 Bean으로 찾을 수 없다는 안내가 있다.
또한, 경로가 security.crypto.password.PasswordEncoder라고 명시되어있다.
* 참고로 PasswordEncoder는 SpringSecurity에서 제공하는 기능이다.
해결방법
경로가 security.crypto.password.PasswordEncoder라고 명시되어있으나, 사실 그쪽에서 기능을 실행할때 에러가 발견됬을 뿐이지 원인은 따로있다. 따라서 해당 경로는 정상적으로 동작하는 코드이다.
원인은 SecurityConfiguration클래스에 있다.
즉, PasswordEncoder를 선언하고, PasswordEncoderFactories클래스를 통한 리턴값을 주고, Bean등록을 해줘야한다.
그래야 에러에서 나온 경로에서 PasswordEncoder를 사용할 수가 있는 것이다.
@RequiredArgsConstructor
@Configuration
public class SecurityConfiguration {
...
@Bean
public PasswordEncoder passwordEncoder() {
return PasswordEncoderFactories.createDelegatingPasswordEncoder();
}
...
}
728x90