【问题标题】:Express JS - Reset cookie expiration timeExpress JS - 重置 cookie 过期时间
【发布时间】:2016-06-23 20:38:35
【问题描述】:

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

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

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

req.session.cookie.maxAge = 6000

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

提前感谢您的帮助

【问题讨论】:

  • 试试 req.session.cookie.expires = new Date(Date.now() + 6000);不过我还没试过。
  • 这很奇怪,我刚刚尝试过,它按预期工作。每次页面刷新都会更新 Cookie 的过期值。
  • 哦,我的错...我没有将滚动属性设置为 true...

标签: node.js express express-session


【解决方案1】:

你必须使用中间件,我的代码很简单,但对我来说很好用

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
  })
}));

【讨论】:

  • 谢谢,解决了我的问题,顺便问一下req.session._garbage是什么?
【解决方案2】:

请查看此示例,它可能对您有所帮助

像这样更新你的代码

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 版本并安装最新版本

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-12
    • 2013-11-14
    • 2011-12-17
    • 2012-05-19
    • 1970-01-01
    • 2014-04-16
    • 1970-01-01
    相关资源
    最近更新 更多