我使用passport.js(本地策略)对用户进行身份验证,但我收到以下错误:
Unhandled "error" event. (Incorrect arguments)
详细错误消息:
index.js文件:
const {register: registerUser, login: loginUser} = require('../controllers/authentication');
// login
router
.route('/login')
.post(loginUser);
Authentication.js文件:
// login function
let login = (req,res) => {
if(!req.body.email || !req.body.password){
sendJsonResponse(res, 400, {"message": "All fields required"});
return;
}
passport.authenticate('local', (err, user, info) => {
let token;
if(err){
sendJsonResponse(res, 404, err);
return;
}
if(user){
token = user.generateJwt();
sendJsonResponse(res, 200, {
"token": token
});
} else {
sendJsonResponse(res, 401, info);
}
})(req,res);
};
Passport.js文件:
const passport = require('passport');
const LocalStrategy = require('passport-local').Strategy;
const mongoose = require('mongoose');
const User = mongoose.model('Users');
passport.use(new LocalStrategy({
usernameField: 'email',
}, function (email, password, done) {
User.findOne({'email': email}, function(err, user) {
if(err){
return done(err);
}
if(!user){
return done(null, false, {message: 'Incorrect Username.'});
}
if(!user.validPassword(password)){
return done(null, false, {message: 'Incorrect Password.'});
}
return done(null, user)
});
}
));
我似乎无法弄清问题是什么。我已经尝试检查typeof
电子邮件和密码,但确实是Strings
。有谁知道可能是什么问题。