2015-11-12 4 views
0

Как я могу сказать, когда экспресс создает новый сеанс? Я использую хранилище сеансов mongodb.Как подключиться к событию создания экспресс-сессии

У меня возникла проблема с созданием дополнительных сессий и вы хотите сузить проблему, отслеживая, какие запросы URL-адресов запускают новые сеансы, которые будут созданы.

ответ

1

Вы можете подключиться к обратному сообщению genid. По умолчанию express-session генерирует свои собственные идентификаторы сеанса.

Но вы можете сгенерировать идентификатор сеанса самостоятельно, указав обратный вызов genid. В рамках этого обратного вызова вы можете зарегистрировать новый сеанс (и затем вернуть уникальный идентификатор сеанса).

Вот пример, адаптированный из express-session README:

app.use(session({ 
    genid: function(req) { 
    console.log('New session was created'); 
    return genuuid(); // generate a UUID somehow and return it 
    }, 
    secret: 'keyboard cat' 
})); 
+0

Спасибо, это отличный ответ, но приводит меня к катамнестическому/лучшему вопросу: Есть ли способ, чтобы сказать, если объект req.session был только недавно создан, или был извлечен из магазина? – ksloan

2

Это то, что я в конечном итоге делает.

app.use(function(req, res, next) { 
    if (!req.session.returning) { 
     // session was just created 
     req.session.returning = true 
    } else { 
     // old session 
    } 
    next() 
}) 
Смежные вопросы