작성
·
376
·
수정됨
1
loadUserByUsername 메서드에서 username 으로 조회잘되고 조회된 MemberDto는 log 출력도 잘되는데 다음 단계에서 "Encoded password does not look like BCrypt" 라는 warn 과 함꼐 "Failed to process authentication request" 로 자격증명에 실패했다고 합니다.
DB의 패스워드는 암호화 되어 잘 저장된거 확인됩니다
제가 무언가를 잘못 작성한건지
파라미터로 보낸 password 는 어디서 encode해야 하는건지 아니면 다른 문제가 있는건가요?
답변 5
0
일단 발생한 오류는 해결을 하긴 햇습니다. 이유를 밝혀내진 못했는데 loadUserByUsername 에서 호출된 MemberDTO의 생성자에 전달인수의 순서가 잘못 전달되고 있었습니다. MembetDTO 의 생성자를 지우고 다시 하나씩 매개변수 추가하면서 전달값을 확인하니 이제 정상 작동 됩니다. ^^
이미 지우고 다시 작성한 거지만 아직 해결안된건 순서를 맞춰서 실행했을때도 똑같은 현상이 일어나서 좀 의아했습니다.
아뭏든 좋은 하루 되시구요 신경써 주셔서 감사합니다
0
test코드로 인코딩한 값으로DB를 업데이트해도 같은 메세지 "Encoded password does not look like BCrypt" 나옵니다.
파라미터로 전송된 password 를 인코딩하는 별도의 설정이나 코드가 혹시 따로 있는데 제가 놓치고 있는게 있을까요?
0
코드를 한번 실행해서 살펴보고 싶으니
https://drive.google.com/drive/folders/1ZLHRKaXx8Ou8kZNd1WE6qALxq_wJODXW?usp=drive_link
에 프로젝트를 올려주시면 좋겠습니다.
아니면 구멍가게 코딩단에 질문올리시면서 프로젝트를 첨부해 두셔도 됩니다.
0
에러 메시지 자체로 보면 패스워드 문제가 맞긴 하네요..(화면에서 짤린 부분에 인코딩된 패스워드 값이 있었을꺼 같네요)
우선은 현재 DB에 있는 인코딩된 값이 정상적인지 아래와 같은 코드로 확인해 주세요
boolean matchResult = passwordEncoder.matches("1111", result);
log.info(matchResult);
만일 틀렸다면 아래 코드의 결과로 업데이트 하신 후에 확인해 보시기 바랍니다.
String origin = "1111";
String result = passwordEncoder.encode(origin);
log.info(result);
아.. ㅋㅋㅋ 지금 외부에서 잠시 보고 있었는데.. 해결되셨다니 다행입니다.
코드가 다른 부분이 있어서 고민하고 있었습니다.