Node.js, сессия с бесконечным циклом - PullRequest
2 голосов
/ 28 февраля 2012

Я использую expressjs и connect-mongo@0.1.7 в качестве MongoStore для сеанса.

Что случилось, код сеанса работал.но после обновления узла и npm до последней версии и Mongo до 2.0.2, если я добавлю express.session (store: new MongoStore), он запустит бесконечный цикл.Есть идеи, что происходит?

вот мой код:

express.createServer(
  express.cookieParser(),
  express.bodyParser(),
  express.session({ secret: cfg.session_secret,
  cookie: { domain: 'mydomain.com' },
  store:new MongoStore({

    db: cfg.db_session_name,
    host: cfg.db_ip,
    port: cfg.db_port
    })
  })
)

Вот ошибка:

TypeError: Not a string or buffer
at Object.createHmac (crypto.js:129:21)
at Object.sign (/node_modules/connect-mongo/node_modules/connect/lib/utils.js:135:6)
at Object.serialize (/node_modules/connect-mongo/node_modules/connect/lib/middleware/session/cookie.js:115:17)
at ServerResponse.writeHead (/node_modules/express/node_modules/connect/lib/middleware/session.js:265:46)
at ServerResponse._implicitHeader (http.js:808:8)
at ServerResponse.end (http.js:645:10)
at next (/node_modules/express/node_modules/connect/lib/http.js:167:13)
at pass (/node_modules/express/lib/router/index.js:219:24)
at nextRoute (/node_modules/express/lib/router/index.js:209:7)
at callbacks (/node_modules/express/lib/router/index.js:274:11)

Ответы [ 2 ]

4 голосов
/ 29 февраля 2012

Только что получил временное решение для этого. от другого узла "jacobstr"

см. Это: https://github.com/kcbanner/connect-mongo/issues/29#issuecomment-4233108

Итак, я иду в папку node_modules / connect-mongo. Отредактируйте файл package.json следующим образом: https://github.com/jacobstr/connect-mongo/blob/master/package.json (только одно изменение: <2). </p>

Затем в этой папке запустите sudo npm install -d

тогда все работает. :)

2 голосов
/ 29 февраля 2012

Я столкнулся с той же проблемой. Я полагаю, что это вызвано тем, что express и connect-mongo используют разные версии connect, и эти разные версии имеют разные сигнатуры методов для cookieParser. Версия connect-mongo использует ожидаемый "секретный" ключ для подписи данных сеанса, но версия, которую использует экспресс, не предоставляет ее.

На GitHub есть обновление для поддержки connect 2.0, но оно пока недоступно через npm.

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