2015-09-26 102 views
1

我正在使用快速会话来管理会话。我正在使用这个:Express JS - 重置cookie过期时间

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

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

req.session.cookie.maxAge = 6000 

但最大年龄不复位和会话在6秒内始终到期,即使URL被击中。我怎样才能每次把它改成6000?

感谢您的帮助提前

+1

尝试req.session.cookie.expires =新日期(Date.now()+ 6000);我还没有尝试过。 – Molda

+0

不,不起作用... – Srikrishnan

+0

那么奇怪,我刚刚尝试过它,它按预期工作。每次刷新页面时,Cookie的过期值都会更新。 – Molda

回答

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

谢谢,这解决了我的问题,顺便说一句'req.session._garbage'是什么? –

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 

这一个也不能正常工作,请检查您的

快递会话和cookie的解析器NPM版本,并安装最新版本

所有例子为我工作,请看一个波纹管快照。

enter image description here