본문 바로가기
Spring

[Spring Error] There is no PasswordEncoder mapped for the id "null"

by dbjh 2021. 3. 21.
반응형

Spring Security를 이용해서 회원가입을 하고 로그인을 하려고보니 아래와 같은 에러가 발생했다.

There is no PasswordEncoder mapped for the id "null"

이유를 확인해보니 Spring Security 버전 5 이상부터는 PasswordEncoder가 변경되었기 때문에 회원정보 저장시에 password앞에 암호화 정보를 같이 지정해서 저장해야하기 때문이다.

# 암호화 명시 방식
{암호화 명}실제 비밀번호

# 기존 패스워드
1234

# 암호화 방식을 명시한 패스워드
{noop}1234

 

위처럼 암호화 방식을 명시한 후에 코드를 적용해보도록하자. 아래의 코드는 회원을 생성하는 Service 로직인데, 이를 변경해보도록 하자.

# AS-IS

    public Member createMember(MemberDto memberDto) {
        return memberRepository.save(
                new Member(
                        memberDto.getUsername(),
                        getEncodedPassword(memberDto.getPassword()),
                        memberDto.getRole()
                ));
    }
    
    
# TO-BE

    public Member createMember(MemberDto memberDto) {
        return memberRepository.save(
                new Member(
                        memberDto.getUsername(),
                        getEncodedPassword(memberDto.getPassword()),
                        memberDto.getRole()
                ));
    }

    private String getEncodedPassword(String password) {
        return ("{noop}" + password);
    }

 

위처럼 암호화 방식을 명시하는 메소드를 추가한 후 이 메소드를 사용해서 회원 정보를 저장하자. 그런 다음 다시 로그인을  시도하면 정상적으로 로그인 되는것을 확인할 수 있다.

로그인 성공화면 확인

 

반응형

'Spring' 카테고리의 다른 글

[Spring] IntelliJ 에서 queryDSL 의 Q 도메인을 찾지 못할때  (0) 2020.08.23
[Spring] ResourceLoader  (0) 2020.05.17
[Spring] ApplicationEventPublisher  (0) 2020.05.15
[Spring] MessageSource  (0) 2020.01.18
[Spring] Environment - Property  (0) 2020.01.07

댓글