«session» не определен при использовании express / redis для хранилища сеансов

Я пытаюсь использовать redis для сеансов в своем express-приложении.

Я делаю следующее:

var express = require('express'); var RedisStore = require('connect-redis')(express); app.configure('development', function(){ app.use(express.session({ secret: "password", store: new RedisStore({ host: "127.0.0.1", port: "6379", db: "mydb" }) })); 

Позже, в моем приложении, если я что-то вроде:

 var whatever = req.session.someProperty; 

Я получил:

Невозможно прочитать свойство «someProperty» неопределенного

Это указывает на то, что req.session не определено (я вижу это из записи console.log в моей секции конфигурации)

Я определенно переработал redis и вижу, что мое приложение сначала подключается к нему (с помощью монитора redis-cli)

Похоже, что вам не хватает:

 app.use(express.cookieParser()); 

перед вашим app.use(express.session(...)); вызов.

См. Здесь .

Сессии не будут работать, если у вас нет этих 3 в этом порядке:

 app.use(express.cookieParser()); app.use(express.session()); app.use(app.router); 

Я не уверен, что маршрутизатор является обязательным для использования сеансов, но он разбивает их, если он помещен перед ними.

Имела та же проблема, однако это было вызвано изменениями в последней версии Express.

Теперь вам нужно передать express-сессию функции connect-redis export для расширения сеанса. Хранилище:

 var express = require('express'); var session = require('express-session') var RedisStore = require('connect-redis')(session); 

В последнее время ситуация изменилась с Express 3 / Express 4. Пожалуйста, подтвердите, что вы используете версию 4 .

Концепция промежуточного программного обеспечения изменилась. Вам необходимо установить эти посредники вручную. «express-сессия» является одним из 4.0 промежуточных.

Я рекомендую прочитать

http://scotch.io/bar-talk/expressjs-4-0-new-features-and-upgrading-from-3-0 и https://github.com/visionmedia/express/wiki/Migrating-from- 3.x к 4.x

Кроме того, некоторые пользователи были смущены тем, что сам repository github назван просто «сеансом», но

 npm install express-session 

верно.

У меня такая же проблема. Оказалось, что redis просто настроен на другой порт.

  • socket.io и сеанс?
  • Как использовать сеансы в приложении ASP.NET MVC 4?
  • Переменные сеанса в ASP.NET MVC
  • Получение контекста сервлетов, сеанса и запроса в внешнем контейнере POJO
  • Обмен данными сеанса между контекстами в Tomcat
  • Когда Hibernate сбрасывает сеанс, как он решает, какие объекты в сеансе загрязнены?
  • Как обмениваться сеансами с Socket.IO 1.x и Express 4.x?
  • Веб-приложение заблокировано при обработке другого веб-приложения при совместном использовании одного сеанса
  • Классический ASP: несколько ASPSESSIONID в файлах cookie
  • Как использовать параметры, объекты запроса и сеанса, присутствующие в ActionContext?
  • Состояние сеанса может использоваться только тогда, когда для параметра enableSessionState установлено значение true либо в конфигурации
  • Давайте будем гением компьютера.