node.js sessionStore показывает одинаковые данные для всех сессий - PullRequest
0 голосов
/ 29 марта 2011

Я использую node.js и хочу хранить сессии в хранилище KeyValue.Я попробовал Redis и MongoDB для этого.В обоих случаях я использую для этого переменную req.sessionStore, как в этом примере:

app.get('/user', parseParams, function(req,res) {
    data = req.sessionStore.userData || {};
    sendStringified(req,res,data);
});

Но независимо от того, в каком браузере я открываю свое веб-приложение, если я захожу на сайт, он обращается к даннымпоследний аккаунт, в который я вошел откуда-то еще.Таким образом, только один пользователь может войти в систему одновременно.Кажется, он разделяет объект req.sessionData во всех сеансах.Я что-то упустил?

Если я иду в свою сессионную базу данных в клиенте mongo и выполняю db.sesions.find (), он показывает записи в следующем формате:

{ "_id" : "CKMF8DfBpYNSCNyPIDj9ozVM.ZVo4d0/Oxrxdql44E6QL+U1AgtHWbGXLyX826YO1bDo", 
  "session" :  "{\"lastAccess\":1301358495277,
                 \"cookie\":{\"originalMaxAge\":14400000,\"expires\":\"2011-03-29T04:28:16.004Z\",\"httpOnly\":true,\"path\":\"/\"},
                 \"oauth\":{\"token\":\"the_token\",\"token_secret\":\"the_secret\",\"verifier\":\"the _verifier\",\"access_token\":\"a_token\",\"access_token_secret\":\"a_t_s\"}}" }

1 Ответ

2 голосов
/ 29 марта 2011

Я предполагаю, что вы используете connect или express, поэтому:

Вы не взаимодействуете напрямую с магазинами.Вы просто взаимодействуете с req.session, и connect будет использовать настроенное вами хранилище.

Я рекомендую вам взглянуть на пример, предоставленный в хранилище rmongo (пример redis был удален).

https://github.com/masylum/connect-mongodb/blob/master/examples/index.js

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...