인프런 커뮤니티 질문&답변

송근봉님의 프로필 이미지
송근봉

작성한 질문수

따라하며 배우는 노드, 리액트 시리즈 - 기본 강의

노드 리액트 기초 강의 #11 로그인 기능 with Bcrypt (1)

bcrypt.compare 함수 부분의 매개변수 콜백함수 isMatch는 boolean으로 반환되는 것이 아닌가요?

작성

·

249

0

userSchema.methods.comparePassword= function(plainPassword, cb){//cb는 (err,isMatch)이다.
    //plainPassword 유저가 입력한 password
    
    //유저가 입력한password를 암호화 하여 암호화되어있는 비밀번호와 비교한다.
    bcrypt.compare(plainPassword, this.passwordfunction(err, isMatch){//bcrypt의 compare함수를 이용하여 user가 입력한 password와 비교한 후 결과를 isMatch(boolean)에 담아준다.
        if(err) return cb(err), //err은 err정보를 담고있다
        cb(null,isMatch)//isMatch == 'true'or false ?? <==요 부분이 궁금합니다.
    })
}
따라서 index.js에서 user.comparePassword
if문 부분의 조건을 (isMatch === false)로 비교해서 return해야 하는것이 맞지 않는것인지 궁금합니다.
if(!isMatch)//여기 이상함 isMatch값은 boolean이와야하는데 왜 널이 아닌지를 비교하는지 이상
                return res.json({loginSuccess: falsemessage:"비밀번호가 틀렸습니다."})

답변 1

1

John Ahn님의 프로필 이미지
John Ahn
지식공유자

안녕하세요 송근봉님 ! 

if(!isMatch) 부분은  null인지 아닌지 체크가 아닌   true인지 false인지를 체크해주고 있습니다. 

if(true가 아니면) {}

이런식으로 풀어쓸수가 있습니다. 

그리고 

if(err) return cb(err), //err은 err정보를 담고있다
cb(null,isMatch)//isMatch == 'true'or false ?? <==요 부분이 궁금합니다.
그리고 이 부분에서는  return cb(err);   이런식으로 끊어주시면 됩니다.    ,  =>  ;  이런식으로 바꿔주세요  ~! 
수고하세요 ~!
송근봉님의 프로필 이미지
송근봉

작성한 질문수

질문하기