2011-04-17 66 views
7

我正在使用node.js和express框架。作为一个会话商店,我正在使用MongoDB。如何设置从MongoDB中删除会话对象的生命周期。这就是我正在做的声明:使用express和MongoDB的node.js中的会话生存期

app.use(express.cookieParser()); 
    app.use(express.session({ 
       secret: "Stays my secret", 
       store: new MongoStore({ db: 'myDB' }) 
        })); 

回答

7

你的问题有点模糊但是从我可以收集你wan't设置会话的保质期:

可以使用maxAge像所以:

app.use(express.cookieParser()); 
app.use(express.session({ 
    secret : "Stays my secret", 
    maxAge : new Date(Date.now() + 3600000), //1 Hour 
    expires : new Date(Date.now() + 3600000), //1 Hour 
    store : new MongoStore({ db: 'myDB' }) 
})); 

expires值需要明确的新版本,其中作为maxAge是旧版本中,您只需要expires虽然。

+4

谢谢。每次使用会话时是否将maxAge重置为计时器,还是从会话创建计数? – Thomas 2011-04-17 22:23:59

+3

基于http://stackoverflow.com/questions/10429557/whats-the-correct-way-to-use-maxage-with-express-js,它看起来像你的日期使用设置调用“过期”键,而不是“maxAge”。 – Aaron 2012-11-04 04:05:25

+5

maxAge未来应该是*年龄*(例如以毫秒为单位的值)而不是*时间*。 – UpTheCreek 2013-07-15 17:56:25

0

@RobertPitt编辑您的回答。 的Cookie(会话)对象是这样的:

{ 
"cookie":"originalMaxAge":null,"expires":null,"httpOnly":true,"path":"/"}, 
"your_var_1":"value 1", 
"your_var_2":"value 2", 
... 
} 

express.session应该是这样的(它在文档):

app.use(express.session({ 
    secret : "Stays my secret", 
    cookie: { 
     maxAge : new Date(Date.now() + 3600000), //1 Hour 
     expires : new Date(Date.now() + 3600000), //1 Hour 
    }, 
    store : new MongoStore({ db: 'myDB' }) 
})); 

而且这样的:

maxAge : new Date(Date.now() + 3600000), //1 Hour 

将导致每个cookie(这里也是会话)将在服务器启动后一小时自动过期