首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >bcryptjs comparePassword总是返回false - NodeJS

bcryptjs comparePassword总是返回false - NodeJS
EN

Stack Overflow用户
提问于 2018-05-04 23:57:47
回答 1查看 219关注 0票数 1

我已经看过这里问题的其他答案,但仍然一无所获。我无法使comparePassword函数返回true

代码语言:javascript
复制
module.exports.createUser = function(newUser, callback) {
  bcrypt.genSalt(10, function(err, salt){
    bcrypt.hash(newUser.password, salt, function(err, hash){
      newUser.password = salt;
      newUser.save(callback);
    });
  });
};

module.exports.comparePassword = function(candidatePassword, hash, callback){
  console.log("Provided password is " + candidatePassword);
  console.log("Provided hash is " + hash);
  bcrypt.compare(candidatePassword, hash, function(err, isMatch) {
    if(err) throw err;
      console.log(isMatch);
      callback(null, isMatch);
    });
}

因此,如果我们在此阶段测试用户,您可以看到他们的数据

代码语言:javascript
复制
{ _id: 5aec6f702a4a181f261a43fe,
  full_name: 'Its me',
  username: 'myusername',
  email: 'myemail@gmail.com',
  tel_number: '12345678',
  password: '$2a$10$6GCgZDt.FL/eeZ1NsDASe.', // text version = test
  __v: 0
}

运行comparePassword时,控制台日志返回

代码语言:javascript
复制
Provided password is test
Provided hash is $2a$10$6GCgZDt.FL/eeZ1NsDASe.

所以对我来说,它们是匹配的,对吧?

不知道这是怎么回事。

EN

回答 1

Stack Overflow用户

发布于 2018-05-06 22:29:51

您可以尝试用newUser.password = hash;替换newUser.password = salt;行吗?

如果有效,请让我们知道。

我的github存储库中有一个示例,它可能会有所帮助

https://github.com/shirshendubhowmick/jwt-demo

以下是代码库中的代码片段

代码语言:javascript
复制
    bcrypt.genSalt(10, (error, salt) => {
        bcrypt.hash(user.password, salt, (error, hash) => {
            user.password = hash;
            next();
        });
    });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50178904

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档