Actualmente estoy teniendo un infierno de tiempo tratando de almacenar sesiones en MongoDb.NodeJS + Express + Mongo Session storage
He intentado express-session-mongo y connect-mongodb y ambos me dan el mismo "error de servidor interno 500" cuando intento cargar la página de inicio de sesión. Lo que me lleva a pensar que tal vez haya un conflicto con mongoose-auth en alguna parte.
De todos modos aquí es mi configuración:
app.js:
var MongoStore = require('connect-mongodb');
var MongoDb = require('mongodb').Db;
var Server = require('mongodb').Server;
var db = new MongoDb('myDb', new Server('localhost', 27017, {auto_reconnect: true, native_parser: false}));
app.configure(function() {
app.use(express.logger({format: 'dev'}));
app.set('views', __dirname + '/../views');
app.set('view engine', 'jade');
app.set('view options', { layout: false });
app.use(express.bodyParser());
app.use(express.cookieParser());
app.use(mongooseAuth.middleware());
app.use(require('./mysite').middleware());
app.use(express.methodOverride());
});
app.configure('production', function(){
var oneWeek = 657450000;
app.use(express.static(__dirname + '/../public', { maxAge: oneWeek }));
app.use(express.session({ store: new MongoStore({db: db}), secret: 'super secret' }));
app.use(express.errorHandler());
});
// Routes
require('./routing.js');
mongooseAuth.helpExpress(app);
app.listen(3000);
console.log('Express server listening on port %d in %s mode', app.address().port, app.settings.env);
userModel.js
var Schema = mongoose.Schema;
var mongooseTypes = require("mongoose-types");
var mongooseAuth = require('mongoose-auth');
mongooseTypes.loadTypes(mongoose);
var everyauth = require('everyauth')
everyauth.debug = true;
var UserSchema = new Schema({any: {}});
UserSchema.plugin(mongooseAuth, {
everymodule: {
everyauth: {
User: function() {
return User;
}
}
}
, password: {
loginWith: 'email'
, extraParams: {
phone: String
, username: String
}
, everyauth: {
getLoginPath: '/login'
, postLoginPath: '/login'
, loginView: 'account/login.jade'
, getRegisterPath: '/register'
, postRegisterPath: '/register'
, registerView: 'account/register.jade'
, loginSuccessRedirect: '/login/success'
, registerSuccessRedirect: '/register/success'
}
}
});
mongoose.model('User', UserSchema);
User = mongoose.model('User');
En este momento en el tiempo que realmente estoy tratando para usar MongoDb como el almacén de sesiones, pero de nuevo obtengo un error de 500 sin información en el node.js conso cuando intento cargar la página de inicio de sesión.
Cualquier ayuda sería muy apreciada.
Gracias
En realidad acabo de volver a intentar con express-session-mongo y aunque sigo teniendo el mismo comportamiento (tratando de cargar la página de inicio de sesión falla con un error 500), acabo de registrar MongoDb y la sesión es en realidad allí como se esperaba – Lancelot
FYI, también lo intentó connect-mongo, el mismo resultado ... mongoose-auth no jugando bien? – Lancelot
Después de buscar el código del módulo everyauth, todo lo que pude averiguar fue que el error 500 ocurrió en everyauth/lib/modules/password.js >> línea 47: res.render (view, locals); Desafortunadamente eso no ayuda demasiado desde donde estoy parado ... :( – Lancelot