J'utilise passport.js pour gérer l'authentification sur mon application nodejs + express.js. J'ai configuré une LocalStrategy pour récupérer les utilisateurs de mongodb.
Mes problèmes sont les suivants Les utilisateurs doivent se ré-authentifier lorsque je redémarre mon serveur de nœuds. . C'est un problème car je le développe activement et je ne veux pas avoir à me connecter à chaque redémarrage... (+ j'utilise le superviseur de nœuds)
Voici la configuration de mon application :
app.configure(function(){
app.use('/static', express.static(__dirname + '/static'));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(express.cookieParser());
app.use(express.session({secret:'something'}));
app.use(passport.initialize());
app.use(passport.session());
app.use(app.router);
});
Et configuration de la sérialisation des sessions :
passport.serializeUser(function(user, done) {
done(null, user.email);
});
passport.deserializeUser(function(email, done) {
User.findOne({email:email}, function(err, user) {
done(err, user);
});
});
J'ai essayé la solution donnée sur un blog (j'ai enlevé le lien car il n'existe plus) en utilisant connect-mongodb sans succès.
app.use(express.session({
secret:'something else',
cookie: {maxAge: 60000 * 60 * 24 * 30}, // 30 days
store: MongoDBStore({
db: mongoose.connection.db
})
}));
EDITAR problème supplémentaire : une seule connexion doit être établie (l'utilisation d'une seule connexion limite le service gratuit de mongohq)
EDIT 2 solution (comme une édition car ma réputation est trop faible pour répondre à ma question maintenant
Voici la solution que j'ai finalement trouvée, en utilisant la connexion initiée par la mangouste.
app.use(express.session({
secret:'awesome unicorns',
maxAge: new Date(Date.now() + 3600000),
store: new MongoStore(
{db:mongoose.connection.db},
function(err){
console.log(err || 'connect-mongodb setup ok');
})
}));