我已经使用护照进行验证并保存了值是资源集合,并且我得到了未被捕获,未指定"错误"事件。 (参数不正确)。但我只使用了相同的电子邮件和密码名称
我的passport.js在下面
var LocalStrategy = require('passport-local').Strategy;
var mongoose = require('mongoose');
var User = require('../app/models/db_model');
module.exports =function(passport){
passport.serializeUser(function(user, done) {
done(null, user.id);
//console.log("ser"+user);
});
passport.deserializeUser(function(id, done) {
User.findById(id, function(err, user) {
//console.log("deser"+user);
done(err, user);
});
});
passport.use('local-userlogin', new LocalStrategy({
usernameField : 'email',
passwordField : 'password',
passReqToCallback : true
},
function(req, email, password, done) {
User.findOne({ 'email' : email}, function(err, user) {
console.log(user);
if (err)
return done(err);
if (!user)
return done(null, false, req.flash('loginMessage', 'Oops! Invalid Username.'));
if (!user.validPassword(password))
return done(null, false, req.flash('loginMessage', 'Oops! Invalid Password.'));
return done(null, user);
});
}));
}
请在这个问题上帮助我
答案 0 :(得分:2)
使用Passport和Bcrypt [bcrypt-nodejs]时收到同样的错误。
在我的用户模型中,我有
userSchema.methods.encryptPassword = password => {
return bcrypt.hashSync(password, bcrypt.genSaltSync(1), null);
}
userSchema.methods.validPassword = password => {
return bcrypt.compareSync(password, this.password);
}
然后用
代替userSchema.methods.encryptPassword = function(password) {
return bcrypt.hashSync(password, bcrypt.genSaltSync(5), null);
}
userSchema.methods.validPassword = function(password) {
return bcrypt.compareSync(password, this.password);
}
这摆脱了错误。
这似乎意味着bcrypt-nodejs
不喜欢箭头功能。
希望这有帮助。