2017-06-05 1 views
1

Ich verwende Node.js, Express, Passport und MySQL.Pass-Knoten (Fehler: Benutzer konnte nicht aus der Sitzung deserialisiert werden.)

Hier ist mein deserialize Code:

passport.deserializeUser(function(id, done) { 
connection.query("select * from users where UserId = "+id,function(err,rows){ 
     console.log(rows); 
     done(err, rows[0]); 
    }); 
}); 

Auch geprüft mit console.log, dass "Zeilen" wird die Zeile des gewünschten Teilnehmers zurück.

app.get('/logout', function(req, res){ 
    req.logout(); 
    res.redirect('/'); 
}); 

Antwort

0

Rückkehr der Reihe

if(err){ 
     console.log(err); 
     return done(null,err); 
    } 
    done(null, rows[0]); // return row[0] 
+0

wie so? app.get ('/ logout', Funktion (req, res)) { req.logout(); res.redirect ('/'); if (err) { console.log (err); Rückruf (err); } Rückruf (null, Zeilen [0]); }); –

+0

können Sie tun, wie Sie es als Funktion übergeben –

+0

Vielen Dank. War mein Fehler. Ich habe die DB geändert und die Tabelle "Benutzer" wurde umbenannt in "user" ... –

0

Follow-up-Kommentar: Fehler sollten für die done() Funktion als erstes Argument übergeben werden:

return done(err, null);

oder

return done(err);

während deserialisiert Objekte übergeben sollten, wie Sie es haben:

return done(err, rows[0]);

Verwandte Themen