我使用的是Node.js,angularjs,express和passport.我已经尝试了所有我能想到的选择,但仍然没有解决方案.无法从其他帖子中找到此问题的解决方案.
app.post('/login',function(req,res,next) {
console.log(req.body.Email);
console.log(req.body.Password);
passport.authenticate('local',function(err,user,info) {
console.log(err,info);
...
在上面的req.body在控制台中显示正确,但在护照身份验证中它显示null,false和info作为缺少的凭据.
我已将以下内容用于传递端口
passport.use(new LocalStrategy({ usernameField: 'Email' },(Email,Password,done) => {
console.log(Email,done);
User.findOne({ Email: Email.toLowerCase() },(err,user) => {
console.log(err);
if (err) { return done(err); }
if (!user) {
return done(null,false,{ msg: `Email ${Email} not found.` });
}
user.ComparePassword(Password,isMatch) => {
if (err) { return done(err); }
if (isMatch) {
return done(null,user);
}
return done(null,{ msg: 'Invalid email or password.' });
});
});
}));
passport.serializeUser((user,done) => {
// console.log(user,done);
done(null,user.id);
});
passport.deserializeUser((id,done) => {
User.findById(id,user) => {
done(err,user);
});
});
我无法理解为什么问题存在.
有人知道我在这里缺少什么吗?!?!
谢谢!
使用{usernameField:’email’}而不是{usernameField:’Email’},因为你发送的是req.body.email而不是req.body.Email