Wann wird die Passmethode serialize und deserialize aufgerufen? Was genau setzt es?

8

Wir haben zwei Arten von Benutzern, Admin und allgemeine Benutzer.

%Vor%

Console.log wird häufig (sogar bei einer einzelnen API-Anfrage) mit dem Text

ausgegeben
  

Deser

Was genau machen beide Funktionen? Eine ausführliche Antwort wird geschätzt. TIA.

    
theChinmay 24.02.2015, 08:35
quelle

2 Antworten

19

Serialisierung und Deserialisierung sind wichtige Konzepte. Um ein Objekt serialisieren zu können, müssen Sie seinen Status in einen Byte-Stream konvertieren, sodass der Byte-Stream in eine Kopie des Objekts zurückversetzt werden kann.

In einer typischen Webanwendung werden die Anmeldeinformationen, die zur Authentifizierung eines Benutzers verwendet werden, nur während der Anmeldeanforderung übertragen. Wenn die Authentifizierung erfolgreich ist, wird eine Sitzung über einen Cookie im Browser des Benutzers eingerichtet und verwaltet.

Jede nachfolgende Anforderung enthält keine Anmeldeinformationen, sondern das eindeutige Cookie, das die Sitzung identifiziert. Um Login-Sitzungen zu unterstützen, serialisiert und deserialisiert Passport Benutzerinstanzen in und aus der Sitzung.

In dem von Ihnen geschriebenen Code wird nur die Benutzer-ID für die Sitzung serialisiert. Wenn nachfolgende Anforderungen empfangen werden, wird diese ID verwendet, um den Benutzer zu finden, der in req.user wiederhergestellt wird.

Um Entwicklern die Freiheit zu geben, die gewünschte Datenbank zu benutzen, welche Daten sie auch immer serialisieren wollen, können sie das auf ihre eigene Art tun, die Serialisierungs- und Deserialisierungslogik bleibt uns überlassen.

    
NarendraSoni 24.02.2015, 10:17
quelle
2

serializeUser ist die Methode, die bei der Anmeldeanforderung (während der Authentifizierung) aufgerufen wird. Wenn die Anmeldung erfolgreich ist, entscheidet sie, welche Benutzerinformationen in der Sitzung gespeichert werden sollen und ein Cookie wird an den Browser gesendet Pflegen Sie die Sitzung.

%Vor%

Das obige Snippet speichert das Feld user.id in der Sitzung und im Cookie.

deserializeUser ist die Methode, die für alle nachfolgenden Anforderungen aufgerufen wird und von der Middleware passport.session aufgerufen wird. Dadurch können wir bei jeder Anfrage zusätzliche Benutzerinformationen laden. Dieses Benutzerobjekt wird als req.user an die Anfrage angehängt, so dass es in unserer Anfrageverarbeitung zugänglich ist.

Hier ist der Artikel, der erklärt, dass es sehr gut fließt

    
Sunil Garg 03.11.2017 13:14
quelle