Node.js + express.js + passport.js: permanezca autenticado entre el reinicio del servidor
Utilizo passport.js para manejar la autenticación en mi aplicación nodejs + express.js. Configuré una estrategia local para sacar a los usuarios de mongodb
Mi problema es quelos usuarios tienen que volver a autenticarse cuando reinicio mi servidor de nodo. Este es un problema ya que lo estoy desarrollando activamente y no quiero iniciar sesión en cada reinicio ... (+ uso un supervisor de nodo)
Aquí está mi configuración de la aplicación:
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);
});
Y la sesión de configuración de serialización:
passport.serializeUser(function(user, done) {
done(null, user.email);
});
passport.deserializeUser(function(email, done) {
User.findOne({email:email}, function(err, user) {
done(err, user);
});
});
Probé la solución dada en un blog (eliminé el enlace porque ya no existe) usando connect-mongodb sin éxito
app.use(express.session({
secret:'something else',
cookie: {maxAge: 60000 * 60 * 24 * 30}, // 30 days
store: MongoDBStore({
db: mongoose.connection.db
})
}));
EDITAR problema adicional: solo se debe hacer una conexión (uso de una conexión limitada mongohq servicio gratuito)
Editar 2 solución (como una edición como yo, mi reputación es baja para responder mi pregunta por ahora)
Aquí está la solución que finalmente encontré, utilizando una conexión iniciada por mongoose
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');
})
}));