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
ausgegebenDeser
Was genau machen beide Funktionen? Eine ausführliche Antwort wird geschätzt. TIA.
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.
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.
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
Tags und Links authentication node.js express mongoose passport.js