2017-06-02 3 views
0

Ich brauche die Sitzung mit Benutzerobjekt über Pass js, aber in diesem Teil eines Codes zu erstellen, kann ich nur alle Benutzerobjekt oder user.id hinzufügen:wie im Pass Passwortfeld von Benutzerobjekt löschen

passport.serializeUser(function(user, done) { 
     done(null, **user.id or user** ); 
     }); 

Mein Objekt: var userSchema = mongoose.Schema ({ local: { E-Mail: String, Passwort: String, }, });

passport.serializeUser(function(user, done) { 
//Also i tried to delete object field here 
    //(delete user.local.password) , 
      //but it didn't help 
    done(null, user.id); 
}); 

Kann mir jemand dabei helfen?

Antwort

0

Das ist, was serializeUser und deserializeUser sind.

Diese beiden Funktionen sind das Gegenteil!

serializeUser sollten Sie die user.id in der Sitzung setzen, und deserializeUser ist, um die gesamten Benutzerdaten zu erhalten. (z.B. aus der Datenbank zum Beispiel).

See:

passport.serializeUser(function (user, cb) { 
    cb(null, user.id) 
}) 

passport.deserializeUser(function (id, cb) { 
    // here you can find by Id, or do any query you want. 
    User.findById(id, function(err, user) { 
     // here you can change to user object (removing the password), before pass it the cb function 
     cb(err, user); 
    }) 
}) 

Hoffe, es hilft Ihnen!

+0

Sie haben mir wirklich geholfen) Jetzt verstehe ich einen Unterschied zwischen serializeUser und deserializeUser) Wir können Daten mit deserializeUser in req.user) Daten mit serializeUser in req.session gespeichert bekommen. Wir können in req.session nur Benutzer.id oder alle Benutzerobjekt hinzugefügt werden, ist es wahr?) Vielen Dank)) –

+0

Ja, es ist ..... –

Verwandte Themen