2011-04-17 64 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(這裏也是會話)將在服務器啓動後一小時自動過期