req.isAuthenticated()使用NodeJS,Express和PassportJS返回false
req.Authenticated总是返回false,但validationinput错误的用户名和密码显示完美。
这是passportjsauthentication码
passport.js
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); }); }); }));
这是我的路线代码路线
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'); }
帮助我解决这个问题…我坚持这一点
更新:
而使用console.log(req.session)得到这个
- 从node.js中获取错误Uncaught ReferenceError:模块未定义,未捕获ReferenceError:require未定义
- 用CoreOS和多个Docker容器构build应用程序的正确方法
- (Node js) – TypeError:不能调用未定义的方法'getData'
- Node.js Express – 在代理请求之后调用next()
- Express.js req.session在路由中是未定义的
- 在process._tickCallback(node.js:419:13)处,NodeJs,500未能获得访问令牌(错误:连接ECONNREFUSED)
- nodejs Express html
- Webpack + Express + EJS:错误:无法find模块“。”
- 如何解决express.js中的“无法find模块”(自定义模块)错误
- 用于file upload的JWT令牌和Multer(节点)
- 在Async瀑布中为每个具有Mysql连接池的函数