• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    미해결

질문있습니다.

20.04.07 22:47 작성 조회수 96

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

ㅇㅇ님의 프로필

ㅇㅇ

질문자

2020.04.08

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

0

ㅇㅇ님의 프로필

ㅇㅇ

질문자

2020.04.08

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

0

andrewlee님의 프로필

andrewlee

2020.04.08

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