Node.js req.isAuthenticated()使用NodeJS、Express和PassportJS返回false
req.Authenticated始终返回false,但输入错误用户名和密码的验证将完美显示 这是passportjs身份验证代码 passport.jsNode.js req.isAuthenticated()使用NodeJS、Express和PassportJS返回false,node.js,express,mongoose,passport.js,Node.js,Express,Mongoose,Passport.js,req.Authenticated始终返回false,但输入错误用户名和密码的验证将完美显示 这是passportjs身份验证代码 passport.js passport.serializeUser(function(user, done){ done(null, user.id); }); passport.deserializeUser(function(id, done){ RegisterList.findById(id, functi
passport.serializeUser(function(user, done){
done(null, user.id);
});
passport.deserializeUser(function(id, done){
RegisterList.findById(id, function(err, user){
console.log('deserializing user:', user);
done(err, user);
});
});
/* Customer Login Config */
passport.use('customer-login', new LocalStrategy({
usernameField : 'username',
passwordField : 'password',
passReqToCallback : true
},
function(req, username, password, done){
process.nextTick(function(){
RegisterList.findOne({'mobile_no' : username}, function(err, user){
if(err)
return done(err);
if(!user)
return done(null, false, req.flash('loginMessage', 'No User Found'));
if(user.password != password){
return done(null, false, req.flash('loginMessage', 'Invalid password'));
}
return done(null, user);
});
});
}));
这是我的路线代码
路线
帮我解决这个问题…我被这个难住了
更新:
使用console.log(请求会话)时
我明白了
逻辑采用哪种故障路径?而且,我不喜欢
=密码失败逻辑中的代码>。您应该使用严格的类型版本==代码>,或者进行另一个带有更健壮检查的函数调用(如文档:)实际上这不是问题…验证工作正常…登录req.isAuthenticated()时返回false loggingreq.session
(inisLoggedIn()
)显示了什么?请参见上文我更新了我的错误@robertklep
module.exports = function(router, passport){
router.post('/login', passport.authenticate('customer-login', {
successRedirect: '/home',
failureRedirect: '/login',
failureFlash: true
}));
router.get('/home', isLoggedIn, function(req, res){
res.render('secured/customer-home', {user: req.user});
});
};
function isLoggedIn(req, res, next){
console.log(req.session);
if(req.isAuthenticated()){
return next();
}
res.redirect('/login');
}