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

req.isAuthenticated() returns false after some time the server started

本文关键字:一段时间 返回 false 启动 服务器 isAuthenticated req      更新时间:2023-09-26

我在节点js-routes.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还是会话。请帮助

当您在express中创建cookie中间件时,您需要设置会话超时:

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

对不起

事实上,我在azure上发布了我的网站。由于azure站点在空闲超时20分钟后重新启动,身份验证失败