Mongoose 比较 BCRYPT 密码未填写

Posted

技术标签:

【中文标题】Mongoose 比较 BCRYPT 密码未填写【英文标题】:Mongoose compare BCRYPT passwords not filled 【发布时间】:2019-06-28 04:25:42 【问题描述】:

我正在尝试使用打字稿在猫鼬模型中添加 bcrypt。 我以this link 为例。

但我的项目使用的是打字稿,所以我不能完全使用相同的代码。我不明白他们从哪里获得密码来与用户发送密码进行匹配。

当我比较密码时,似乎其中一个密码未定义。 以下是我的代码,不胜感激。

 PersonTestSchema.pre<PersonTestModel>('save', function (next) 
  const user = this;
  if (this.password && this.password.length > 4) 
    bcrypt.genSalt(10, function (err, salt) 
      bcrypt.hash(user.password, salt, (err, hash) => 
        user.password = hash;
        next();
      );
    );
   else 
    next();
  
);

PersonTestSchema.methods.verifyPassword = function (candidatePassword: string) 
  const user = this;
  return bcrypt.compareSync(candidatePassword, user.password);

当我记录候选密码时,它会被填满,但如果我记录 user.password 它是空的。 这在我的代码中似乎是合乎逻辑的,但我不明白他们在示例代码中从哪里得到它。

【问题讨论】:

【参考方案1】:

我想通了。结果我不得不修改他们的护照配置文件版本,最好的方法是从那里传递数据库中的密码

【讨论】:

以上是关于Mongoose 比较 BCRYPT 密码未填写的主要内容,如果未能解决你的问题,请参考以下文章

使用mongoose和bcrypt实现用户密码加密

Node.js Mongoose 使用 bcrypt 登录

使用bcrypt在nodejs中进行密码加密

bcrypt-nodejs 比较方法每次都返回 false

如何将密码文本与 bcrypt 哈希值进行比较?

无论密码如何,Bcrypt-NodeJS compare() 都会返回 false