我已经在 Node js paths.js 中实现了以下功能。在提供任何请求之前,首先会检查 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 .
为什么会变成假的?
是否是由于序列化不当造成的
这是我的序列化和反序列化方法,我做得正确吗,
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或session有关。请帮忙
最佳答案
当您在express中创建cookie中间件时,您需要设置 session 超时:
app.use(express.session({
secret : 'your_cookie_secret',
cookie:{
maxAge : 360000 // one hour in millis
}
})
关于javascript - 服务器启动一段时间后 req.isAuthenticated() 返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26464372/