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

标签 javascript node.js express session-cookies passport.js

我已经在 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/

相关文章:

node.js - 为 NodeJS 编码时,Java 过滤器的等价物是什么?

javascript - 如何使用 JS (Node.js) 防止 HTTP 查询中允许使用 UTF8 字符串?

angularjs - 如何使用 Express 和 Angular 接收回发?

javascript - 在 componentDidMount 中获取数据时出现警告 "Can only update a mounted or mounting component"

javascript - 如果错误 3 次... 游戏结束

javascript - hittng http post 请求后无法执行成功 block

javascript - 使用 express 在客户端显示图像的字符串表示形式

javascript - 无法在 Canvas 上绘制同一图像的多个副本?

node.js - Mocha —— watch 和 Mongoose 模型

javascript - 如何优雅地从 firebase 读取一个 >>new<< 项目?