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:
<code>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); }); </code>
Y la sesión de configuración de serialización:
<code>passport.serializeUser(function(user, done) { done(null, user.email); }); passport.deserializeUser(function(email, done) { User.findOne({email:email}, function(err, user) { done(err, user); }); }); </code>
Probé la solución dada en un blog (eliminé el enlace porque ya no existe) usando connect-mongodb sin éxito
<code>app.use(express.session({ secret:'something else', cookie: {maxAge: 60000 * 60 * 24 * 30}, // 30 days store: MongoDBStore({ db: mongoose.connection.db }) })); </code>
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
<code>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'); }) })); </code>