NodeJS + Express + Mongo stockage de Session
Je rencontre actuellement un enfer de temps à essayer de stocker les sessions dans MongoDb.
J'ai essayé express-session-mongo et connectez-mongodb et à la fois de me donner la même "500 internal server error" quand j'essaie de charger la page de connexion. Ce qui m'amène à penser que peut-être il y a un conflit avec la mangouste-auth quelque part.
En tout cas voici ma configuration:
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 ce moment je suis vraiment juste essayer d'utiliser MongoDb que la session magasin, mais encore une fois j'ai une erreur 500 w/aucune information que ce soit dans le node.js console quand j'essaye de charger la page de connexion.
Toute aide serait grandement appréciée.
Grâce
Pour info, aussi n'essayez connectez-mongo, même résultat... mangouste-auth pas jouer gentil?
Après quelques recherches dans le everyauth du module de code, tout ce que j'étais en mesure de comprendre est que l'erreur 500 qui s'est passé dans everyauth/lib/modules/password.js >> ligne 47: res.render(vue, les habitants); Malheureusement, ça n'aide pas trop à partir de là où j'en suis... 🙁
OriginalL'auteur Lancelot | 2012-03-01
Vous devez vous connecter pour publier un commentaire.
Il a fini d'être un problème de divers modules: connectez-session-mongo /express-session-mongo /connectez-mongo, à l'aide de connecter 2.0.1 et de l'Exprimer à l'aide de connecter 1.8.5.
Apparemment, la dépendance s'affrontent ici empêché la session magasin de modules pour accéder à la " req.secrets " de la propriété.
Pour le faire fonctionner, j'ai fini à l'aide du module de connexion-mongodb qui est encore à l'aide de connecter 1.8.5, tout comme l'Express.
La raison pour laquelle je ne pouvais pas faire connectez-mongodb travail avant que d'erreur de l'utilisateur, j'ai essayé trop dur à utiliser le copier/coller à partir d'exemples en ligne à la place de ma tête.
Voici le code de configuration qui a fini par travailler pour moi avec connectez-mongodb:
Espère que cela aide quelqu'un d'autre qui s'exécute dans cette question. Si vous avez des suggestions d'amélioration sur cette solution, je serais heureux de l'entendre. 🙂
url
param:db: mongoose.connection.db
Je veux juste dire que vous êtes grand.
OriginalL'auteur Lancelot