4

ユーザー セッションを保存するために、connect-mongo で express.session を使用します。私は Cookie maxAge を今から 2 週間に設定しましたが、私が望むのは、ユーザーがその 2 週間以内にアクティブだった場合、セッションがさらに 2 週間延長され、2 週間非アクティブになったときにセッションが削除されるようにすることです (両方のcookie と mongo のセッション)。しかし、問題は、彼がページにアクセスすると MongoDB でセッションが更新されることですが、Cookie は 2 週間で期限切れになり、「有効期限」は変更されません。これは私のコードです:

app.use(express.session({
  secret: 'superSecretKey',
  cookie: {maxAge: 3600000*24*14},
  store: new MongoStore({
    mongoose_connection: mongoose.connections[0],
    db: 'myDb'
  })
}));

どうすれば私が望むものを達成できますか? ありがとう!

4

1 に答える 1

3

私は最終的にそれを解決しました。次のように、ミドルウェアを使用してセッション内のデータを更新し、Cookie が再送信されるようにする必要があります。

app.use(function(req, res, next) {
  req.session._garbage = Date();
  req.session.touch();
  next();
});

このようにして、maxAge は、アプリへのリクエストごとに Cookie とセッションの両方で更新されます。

于 2013-10-09T18:09:15.943 に答える