开发者

Session lifetime in node.js with express and MongoDB

开发者 https://www.devze.com 2023-02-25 06:06 出处:网络
I am using node.js with the express framework. As a session store I am using MongoDB. How can I set the lifetime after which the session objects are removed from MongoDB. This is how I am doing the de

I am using node.js with the express framework. As a session store I am using MongoDB. How can I set the lifetime after which the session objects are removed from MongoDB. This is how I am doing the declaration:

app.use(express.cookieParser());
    app.use(express.session({
 开发者_JS百科               secret: "Stays my secret",
                store: new MongoStore({ db: 'myDB' })
                    }));


Your question is a little vague but from what i can gather you wan't to set the expiration period for the session:

you can use maxAge like so:

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 value is required for new versions of express where as maxAge is for older versions, you should only need expires though.


@RobertPitt edit your answer. Cookie (session) object looks like:

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

Argument for express.session should look like this (it's in documentation):

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

Moreover this:

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

will cause that every cookie (here also session) will be expired automatically one hour after server start

0

精彩评论

暂无评论...
验证码 换一张
取 消