现在已经有一段时间了,并且似乎无法解决这个问题。看过帖子后我就可以找到& stackoverflow帖子。似乎没有任何作用。记录的错误:
Users/username/Sites/dev/node_modules/bcrypt-nodejs/bCrypt.js:642
throw "Incorrect arguments";
^
Incorrect arguments
这里可以看到user.js和passport.js。 http://pastebin.com/CEy6QBkP
错误来自此函数和compareSync
var isValidPassword = function(user, password){
return bCrypt.compareSync(password, user.password);
}
与哈希和&盐与req.body.password相比。任何帮助将不胜感激。感谢。
答案 0 :(得分:4)
您可以检查两个变量的类型,以确保两者都是字符串。一会儿回到同一个问题。下面的代码为我做了诀窍..希望这会有所帮助。
var mongoose = require('mongoose')
var bcrypt = require('bcrypt-nodejs')
var userSchema = mongoose.Schema({
username: String,
password: String,
fullname : String,
role: String,
})
userSchema.methods.generateHash = function(password){
return bcrypt.hashSync(password, bcrypt.genSaltSync(10), null)
}
userSchema.methods.validPassword = function(password){
return bcrypt.compareSync(password, this.password)
}
module.exports = mongoose.model('User', userSchema)
答案 1 :(得分:1)
如果您之前使用过社交登录来创建用户帐户,那么用户很可能没有与该帐户关联的密码。因此,错误可能是比较空密码的结果。
检查您的用户模型并进行此更改
var isValidPassword = function(user, password){
if(this.password != null) {return bcrypt.compareSync(password, this.password);
} else {return false; }}