Ich benutze Pass, um Authentifizierung und Sitzungen in meiner Anwendung zu behandeln. Ich halte Sitzungen zu mongodb mit mongostore.hartnäckige Sitzungen mit Pass, Mongodb und Express
Das Setup funktioniert im Allgemeinen gut. Wenn ich jedoch den Server neu starte, werden alle Benutzer ausgeloggt, so dass anscheinend Sitzungen im Speicher gehalten werden, anstatt nur auf mongodb gespeichert zu werden. Ich versuche ein Setup zu erreichen, bei dem Benutzer beim Neustart des Servers noch angemeldet sind.
Grundkonfiguration ist als
Middleware folgt
app.use(express.cookieParser('your secret here'));
app.use(express.session());
app.use(passport.initialize());
app.use(passport.session({
maxAge: new Date(Date.now() + 3600000),
store: new MongoStore(
{
db: mongodb.Db(
conf.mongodbName,
new mongodb.Server(
'localhost',
27017,
{
auto_reconnect: true,
native_parser: true
}
),
{
journal: true
}
)
},
function(error) {
if(error) {
return console.error('Failed connecting mongostore for storing session data. %s', error.stack);
}
return console.log('Connected mongostore for storing session data');
}
)
}));
Pass
passport.use(new LocalStrategy(
{
usernameField: 'email',
passwordField: 'password'
},
function(email, password, done) {
console.log('user %s attempting to authenticated', email);
return User.findOne({email:email}, function(error, user) {
if(error) {
console.error('Failed saving user %s. %s', user.id, error.stack);
return done(error);
}
if(!user) {
return done(null, false);
}
console.log('user %s logged in successfully', user.id);
return done(null, { //passed to callback of passport.serializeUser
id : user.id
});
});
}
));
passport.serializeUser(function(user, done) {
return done(null, user.id); //this is the 'user' property saved in req.session.passport.user
});
passport.deserializeUser(function (id, done) {
return User.findOne({ id: id }, function (error, user) {
return done(error, user);
});
});
GitHub Repo (einschließlich aller erforderlichen Code Code auszuführen)
ich ein Barebone GitHub Repo erstellt einschließlich des Codes here
Erstellen Sie einfach eine Datei conf.js im Stammverzeichnis mit Ihren mongodb-Anmeldedaten, d. H. MongodbURL und mongodbName, führen Sie npm install und node app.js aus, um loszulegen.
dank
Nicht wirklich Daten auf die Festplatte schreiben ist das, was mongodb web scale macht ;-) Siehe http://www.youtube.com/watch?v=b2F-DItXtZs – jarmod