1

我正在使用 express-session 来管理会话。我正在使用这个:

    app.use(session({secret: 'secret',
                     resave: false,
                     saveUninitialized: false,
                     cookie: { maxAge: 6*1000 
                             }
                    })
            );

现在我想在每次点击我的 url 时将过期值重置为 6。所以我这样做:

req.session.cookie.maxAge = 6000

但是最大年龄不会重置,并且会话总是在 6 秒内过期,即使 URL 被命中也是如此。如何每次将其更改为 6000?

我在这里先向您的帮助表示感谢

4

2 回答 2

3

您必须使用中间件,我的代码非常简单,但对我来说效果很好

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

我将该代码放在 app.js 中,对我来说效果很好

这是我的会话代码:

app.use(session({
  cookie: {
    maxAge: 14400000
  },
  saveUninitialized: true,
  resave: true,
  secret: config.sessionSecret,
  store: new RedisStore({
    port: 6379
  })
}));
于 2016-01-13T14:46:41.780 回答
1

请检查这个例子它可能对你有帮助

像这样更新您的代码

req.session._garbage = Date();
req.session.touch();  
req.session.cookie.expires = 2592000000; // 30*24*60*60*1000 Rememeber 'me' for 30 days

供您参考,请查看以下示例

app.use(session({
    secret: 'iloveyoudear...',
    resave: true,
    saveUninitialized: true,
    cookie: {expires: 30*24*60*60*1000 }
}));

或者

app.use(session({
    secret: 'iloveyoudear...',
    resave: true,
    saveUninitialized: true,
    cookie: {maxAge: 30*24*60*60*1000 }
}));

以上两个示例不起作用请在您的路由器中单独设置

req.session.cookie.maxAge = 2592000000; // 30*24*60*60*1000 Rememeber 'me' for 30 days

这个也不起作用,请检查您的

express-session 和 cookie-parser npm 版本并安装最新版本

所有对我有用的例子,请看下面的一张快照。

在此处输入图像描述

于 2016-06-23T12:23:31.727 回答