sql >> Base de Datos >  >> NoSQL >> MongoDB

Almacenamiento de sesiones NodeJS + Express + Mongo

Terminó siendo un problema de los distintos módulos:connect-session-mongo / express-session-mongo / connect-mongo, usando connect 2.0.1 y Express usando connect 1.8.5.

Aparentemente, el conflicto de dependencia aquí impidió que los módulos del almacén de sesión accedieran a la propiedad 'req.secret'.

Para que funcionara, terminé usando el módulo connect-mongodb que todavía usa connect 1.8.5, al igual que Express.

Sin embargo, la razón por la que no pude hacer que connect-mongodb funcionara antes fue un error del usuario, intenté demasiado usar copiar/pegar de ejemplos en línea en lugar de mi cabeza.

Aquí está el código de configuración que terminó funcionando para mí con connect-mongodb:

var Session = require('connect-mongodb');

app.configure('production', function(){
  var oneWeek = 657450000;
  app.use(express.static(__dirname + '/../public', { maxAge: oneWeek }));

  var session = express.session({
        store: new Session({
              url: 'mongodb://localhost:27017/test', 
              maxAge: 300000
        }),
        secret: 'superTopSecret' 
  });
  app.use(session);

  app.use(mongooseAuth.middleware());
  app.use(require('./mySite').middleware());
  app.use(express.methodOverride());
  app.use(express.errorHandler());  
});

Espero que esto ayude a cualquier otra persona que se encuentre con este problema. Si tiene alguna sugerencia/mejora en esta solución, me encantaría escucharla. :)