인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

ㅇㅇ님의 프로필 이미지
ㅇㅇ

작성한 질문수

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

노드 리액트 기초 강의 #12 토큰 생성 with jsonwebtoken

질문있습니다.

작성

·

174

0

index.js

app.post("/login", (reqres=> {
  User.findOne({ email: req.body.email }, (erruser=> {
    if (!user) {
      return res.json({
        loginSuccess: false,
        message: "없는 아이디입니다.",
      });
    }
    user.comparePassword(req.body.password, (errisMatch=> {
      if (!isMatch) {
        return res.json({
          loginSuccess: false,
          message: "비밀번호가 틀렸습니다.",
        });
      }
      user.generateToken((erruser=> {
        if (errreturn res.status(400).send(err);
        res
          .cookie("x_auth"user.token)
          .status(200)
          .json({ loginSuccess: trueuserId: user._id });
      });
    });
  });
});

User.js

UserSchema.methods.comparePassword = function (plainPasswordcb) {
  bcrypt.compare(plainPasswordthis.passwordfunction (errisMatch) {
    if (!err) {
      return cb(err);
    }
    cb(nullisMatch);
  });
};

UserSchema.methods.generateToken = function (cb) {
  var user = this;
  var token = jwt.sign(user._id.toHexString(), "secretToken");
  user.token = token;
  user.save(function (erruser) {
    if (errreturn cb(err);
    cb(nulluser);
  });
};

이렇게 했는데 loginSuccess가 계속 false로 나옵니다....

답변 3

1

ㅇㅇ님의 프로필 이미지
ㅇㅇ
질문자

아 bcrypt.compare에서 if(!err)라고 했네요... err라고 해야되는데 해결했습니다.

0

ㅇㅇ님의 프로필 이미지
ㅇㅇ
질문자

다른값을 줘도 false가 뜨네요..

0

같은 아이디와 비밀번호를 넣어서 그럴 수 있는데 다른 입력값을 줘보셨나요?

ㅇㅇ님의 프로필 이미지
ㅇㅇ

작성한 질문수

질문하기