Ändern von user.username in Sitzung mit PassportJS

7

Ich habe ein Formular, mit dem Benutzer ihre Profilinformationen aktualisieren können, die mit Daten von req.user über PassportJS gefüllt sind.

Das Problem ist, dass, wenn ich den Wert, der user.username entspricht, aktualisieren, ich die folgende Fehlermeldung bekomme:

%Vor%

Ab Zeile 6 in diesem Codeschnipsel:

%Vor%

Ich nehme an, es liegt daran, dass ich in serializeUser user.username verwende, um es in die Session zu laden:

%Vor%

Weiß jemand, wie man das umgehen kann oder ist es ein hartnäckiges Problem mit Passport?

Der Code, den ich habe, sieht generisch wie folgt aus:

%Vor%

UPDATE:

Pro Kommentaranforderung lautet die Fehlermeldung von findOne in serializeUser beim Aufruf null , also ist es nicht die Abfrage, die das Problem darstellt.

    
Jonathan Bechtel 01.08.2017, 19:56
quelle

2 Antworten

1

Da username ein veränderbarer Wert ist, sollten Sie ihn nicht als Session-Cookie-Schlüssel verwenden.

Ich empfehle dringend die Verwendung von user._id als unveränderten Wert, so dass der Server den aktuellen Benutzer immer noch "kennt", auch wenn der Benutzername geändert wurde . Überprüfen Sie die offiziellen Kategorien , sie verwenden auch id als Session-Cookie-Schlüssel.

Übrigens, selbst wenn Sie username verwenden, sollten Sie NULL nach passport.deserializeUser() suchen:

%Vor%     
haotang 21.08.2017, 06:54
quelle
1

Bitte aktualisieren Sie Ihren Code auf Pass deserialize funtion. Sie haben nicht geprüft, der Benutzer ist verfügbar oder nicht. Wenn kein Benutzer gefunden wurde, haben Sie diesen Fehler & gt;

%Vor%     
Nazmul Hossain 21.08.2017 12:27
quelle

Tags und Links