작성
·
591
0
선생님 안녕하세요!
bcrypt를 통해 compare password하는 부분에서 문제가 발생하여 질문드립니다.
우선 제 git주소는 아래와 같습니다.
https://github.com/Kyu-holic/new-boiler-plate.git
postman에서 register 라우터를 사용해서 유저를 만들면 아래와 같이 등록은 잘 됩니다.
그런데, login 라우터를 사용해서 login을 하려고 하면 계속해서 비밀번호가 틀렸다는 메세지가 뜨는데,
send를 통해서 보니 사진처럼 "data and hash must be strings"라는 에러 메세지가 발생합니다.
이에 대한 해결책을 찾다보니 아래의 주소에서 나오는 것 처럼 bcrypt를 통해 compare password를 할 때 계속해서 false 메시지가 뜨는 사람들이 꽤 있는 것 같았습니다.
https://github.com/kelektiv/node.bcrypt.js/issues/685
그러다 아래 주소의 사이트에서 나온 답변처럼
(6번 문항 solution2에 나와있습니다)
https://copyprogramming.com/howto/bcrypt-comparesync-is-always-returning-false
bcrypt.compare(plainPassword, this.password ....)
에서plainPassword 제일 앞에 백틱을 넣어주니
잘 해결이 됩니다.
이건 어떤 이유에서 이런 현상이 발생하는 것인지,
그리고 왜 제 코드는 선생님 코드와 똑같이 했을 때는 안되고, 저렇게 해야만 되는 것인지 궁금합니다.
그 사이에 bcrypt나 node의 버전이 업그레이드 되어 뭔가 변한 것이 있는 걸까요?
확인 부탁드리겠습니다!
답변