Время жизни сеанса в node.js с экспрессом и MongoDB - PullRequest
7 голосов
/ 18 апреля 2011

Я использую node.js с экспресс-фреймворком.В качестве магазина сессий я использую MongoDB.Как я могу установить время жизни, после которого объекты сеанса удаляются из MongoDB.Вот как я делаю объявление:

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

Ответы [ 2 ]

7 голосов
/ 18 апреля 2011

Ваш вопрос немного расплывчат, но из того, что я могу узнать, вы не хотите устанавливать срок действия сессии:

Вы можете использовать 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 значение требуется для новых версий Express, где maxAge для более старых версий, вам нужно только expires.

1 голос
/ 18 декабря 2013

@ 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 (в данном случае также сеанс) автоматически истечет через час после запуска сервера

...