MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Stockage NodeJS + Express + Mongo Session

Cela a fini par être un problème des différents modules :connect-session-mongo / express-session-mongo / connect-mongo, en utilisant connect 2.0.1 et Express en utilisant connect 1.8.5.

Apparemment, le conflit de dépendances ici a empêché les modules du magasin de sessions d'accéder à la propriété 'req.secret'.

Pour que cela fonctionne, j'ai fini par utiliser le module connect-mongodb qui utilise toujours connect 1.8.5, tout comme Express.

La raison pour laquelle je ne pouvais pas faire fonctionner connect-mongodb auparavant était une erreur de l'utilisateur, j'ai trop essayé d'utiliser le copier/coller à partir d'exemples en ligne au lieu de ma tête.

Voici le code de configuration qui a fini par fonctionner pour moi avec 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());  
});

J'espère que cela aidera tous ceux qui rencontrent ce problème. Si vous avez des suggestions/améliorations sur cette solution, je serais heureux de les entendre. :)