【问题标题】:Why can't change session's expires duration setting in connect-mongo + express.js?为什么不能在 connect-mongo + express.js 中更改会话的过期持续时间设置?
【发布时间】:2013-10-30 15:37:34
【问题描述】:

app.js

app.use(express.cookieParser('your secret here'));

var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/sample);
var MongoStore = require('connect-mongo')(express);
var sessionExpireTime = 10000000; // 10000 sec
var sessionStore = new MongoStore({
  mongoose_connection: mongoose.connection[0],
  db: config.db.name,
  clear_interval: sessionExpireTime / 1000  // second
});

app.use(express.session({
  secret: 'your secret here',
  store: sessionStore,
  cookie: {
    httpOnly: false,
    maxAge: new Date(Date.now() + sessionExpireTime)  // millisecond
  }
}));

app.get('/', function(req, res) {
  if (req.session.user) {
    res.render('index', {title: 'Welcome!'});
  } else {
    res.redirect('/login');
  }
});

app.get('/login', function(req, res) {
  res.render('login', {title: 'login'});
});

app.get('/auth', function(req, res) {
  req.session.user = {name: 'John'};
  res.redirect('/');
});

当调用“/login”然​​后重定向到“/”页面。 以及在 MongoDB 集合的“会话”中创建的文档。

但是 req.session.user 会在 10 秒后从 req.session 中销毁。 当您重新加载页面时,它将返回登录屏幕。

我知道监视 connect-mongo 的 clear_interval 的时间间隔没有过期 cookie。 是否有必要的设置来改变 req.session.user 的过期时间?

谢谢你收到了你不熟悉我的英语的关系...

【问题讨论】:

    标签: node.js mongodb session express


    【解决方案1】:

    maxAge 属性应该是绝对毫秒数,而不是日期:

    cookie: {
      httpOnly: false,
      maxAge  : sessionExpireTime
    }
    

    您的代码还有一些其他问题:

    mongoose_connection: mongoose.connection[0]
    

    应该是mongoose.connections[0](或mongoose.connection,都一样)。

    clear_interval 属性似乎不存在(至少是当前版本)connect-mongo。会话到期的方式是使用 MongoDB 的 ttl 功能(每分钟运行一次)。

    【讨论】:

    • 感谢您的回复! maxAge 类型是数字?哦,我错了。然后connect-mongo制作cookie会话,maxAge从connect-mongo生成的session集合中的秒数,cookie被删除的时间是connect-mongo带来clear_interval时间。我适合这种认可吗?顺便问一下,除了connect-mongo的1 clear_interval之外,你还能得到什么好处?
    • @AmuroNishizawa 我编辑了我的答案,因为我注意到了一些其他问题。
    猜你喜欢
    • 2013-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-30
    • 1970-01-01
    • 1970-01-01
    • 2017-10-07
    • 1970-01-01
    相关资源
    最近更新 更多