Session在Express JS,mongodb,Node js应用程序中自动销毁

时间:2016-10-24 10:26:38

标签: node.js express

当我关闭broswer时,会话会自动被破坏。以下是我的app.js文件中的代码。

const session = require('express-session');
const MongoSessions = require('connect-mongo')(session);
var mongo = require('mongodb').MongoClient;
var db_url = 'mongodb://localhost:27017/test';

app.use(session({
secret: '007',
resave: false,
saveUninitialized: false,
duration: 40*60 *1000,
activeDuration: 10*60*1000,
store: new MongoSessions({
    url: db_url
})
}));

当用户登录时,我将用户的用户ID存储在会话中。当用户再次访问系统时,它会将其重定向到主页。要检查一下:

exports.indexPage = function (req, res, next) {
if (req.session.userid == null) {
    res.render('login');
} else {
    res.render('index');
}

};

当我保持浏览器打开但关闭所有选项卡并再次访问应用程序时,它工作正常。当我关闭浏览器并再次访问该应用程序时,它会将我重定向到登录页面。

1 个答案:

答案 0 :(得分:1)

我不确定durationactiveDuration是什么意思,但它们不是express-session的有效选项。

由于您没有为会话cookie设置maxAge值,因此它会自动限制为当前浏览器会话,这意味着当您关闭浏览器时它将被销毁(正如您已经注意到的那样)

为防止这种情况,请配置maximum age(以毫秒为单位):

app.use(session({
  cookie : {
    maxAge : 40 * 60 * 1000
  },
  secret: '007',
  ...
}));
相关问题