req.isAuthenticated()在服务器启动一段时间后返回false

我在节点js routes.js.中实现了以下function。在任何请求被首先服务之前,检查isAuthenticated。

function isLoggedIn(req, res, next) { if (req.isAuthenticated()) { console.log('Session Expiry '+req.session.cookie.expires); console.log('Authenticated'); return next(); } console.log('Not Authenticated'); res.redirect('/'); } 

但是,当我打开页面一段时间后刷新或导航到其他页面时,它会转到索引页面,而不是当前页面。我发现这是因为req.isAuthenticated()在页面加载一段时间后计算为false。

为什么会变成错误?

是不是因为序列化不当?

这是我的序列化和deserilize方法,我是否正确地做,

 passport.serializeUser(function (user, done) { console.log('Serializing User'); done(null, user.id); }); // used to deserialize the user passport.deserializeUser(function (id, done) { console.log('Calling Deserlize'); dbconn.user_findById(id, function (err, user) {//call to query DB console.log('Deserializing user from DB'); done(err, user); }); }); 

它关心cookie或会话。 请帮助

在express中创buildcookie中间件时,需要设置会话超时:

 app.use(express.session({ secret : 'your_cookie_secret', cookie:{ maxAge : 360000 // one hour in millis } }) 

抱歉

其实我是用azure来发布我的网站的。由于天青网站在空闲超时20分钟后重启,authentication失败