我知道这个问题已经被问过几次了(比如这里,这里或那里,甚至在Github上,但没有一个答案真正对我有用......
我正在尝试使用 Mongoose 和 Passport 为 NodeJS 应用程序开发身份验证,并使用 Bcrypt-NodeJS 来哈希用户的密码。
在我决定重构用户架构并使用 bcrypt 的异步方法之前,一切都正常运行。创建新用户时哈希仍然有效,但我现在无法根据存储在 MongoDB 中的哈希来验证密码。
bcrypt.compare()总是返回false无论密码正确与否,无论密码是什么(我尝试了几个字符串)。为了保持清晰,一些字段已被删除,但我保留了相关部分。
var userSchema = mongoose.Schema({
// Local authentication
password: {
hash: {
type: String,
select: false
},
modified: {
type: Date,
default: Date.now
}
},
// User data
profile: {
email: {
type: String,
required: true,
unique: true
}
},
// Dates
lastSignedIn: { …Run Code Online (Sandbox Code Playgroud)