MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Armazenamento NodeJS + Express + Mongo Session


Acabou sendo um problema dos vários módulos:connect-session-mongo / express-session-mongo / connect-mongo, usando connect 2.0.1 e Express usando connect 1.8.5.

Aparentemente, o conflito de dependências aqui impediu que os módulos de armazenamento de sessão acessassem a propriedade 'req.secret'.

Para fazer funcionar acabei usando o módulo connect-mongodb que ainda está usando o connect 1.8.5, assim como o Express.

A razão pela qual eu não consegui fazer o connect-mongodb funcionar antes foi um erro do usuário, eu tentei muito usar copiar/colar de exemplos online em vez da minha cabeça.

Aqui está o código de configuração que acabou funcionando para mim com 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 isso ajude qualquer outra pessoa que se depara com esse problema. Se você tiver alguma sugestão/melhoria nesta solução, ficarei feliz em ouvi-la. :)