具有express和MongoDB的node.js中的会话生存期

时间:2011-04-17 22:00:51

标签: session mongodb node.js express lifetime

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

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

2 个答案:

答案 0 :(得分:7)

你的问题有点模糊,但从我可以收集的内容中你不想设置会话的有效期:

你可以这样使用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

答案 1 :(得分:1)

@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(此处也是会话)将在服务器启动后一小时自动过期