Express JS - 重置cookie过期时间

时间:2015-09-26 23:53:09

标签: node.js express express-session

我正在使用快速会话来管理会话。我正在使用这个:

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

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

req.session.cookie.maxAge = 6000

但是最大年龄不会重置,即使网址被点击,会话也会在6秒内到期。如何每次将其更改为6000?

感谢您的帮助

2 个答案:

答案 0 :(得分:2)

你必须使用中间件,我的代码非常简单,但它适用于我

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

答案 1 :(得分:0)

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

像这样更新您的代码

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

OR

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

所有示例都适用于我,请查看一个波纹管快照。

enter image description here