【发布时间】:2015-12-18 17:27:00
【问题描述】:
bcrypt.compare() 在用户模型中使用此代码总是返回 false。这是 bcrypt-nodejs。
User.pre('save', function (callback) {
this.password = bcrypt.hashSync(this.password, bcrypt.genSaltSync(10))
this.token = jwt.sign(this.email, process.env.JWT_SECRET)
callback()
})
User.methods.verifyPassword = function ( password ) {
const self = this
return Q.Promise( (resolve, reject) => {
bcrypt.compare( password, self.password, (error, isMatch) => {
if (error) reject( new Error("Error checking user password."))
resolve(isMatch)
})
})
}
我可以看到数据库中出现了一个哈希。我可以看到正确的密码进入了verifyPassword 函数。
编辑:问题似乎是.pre('save', ... 连续出现两次。所以新散列的密码再次被散列。
【问题讨论】:
标签: javascript node.js mongoose bcrypt