2017-01-16 5 views
1

Ich entwickle eine Back-End-API in Node.js mit Express.js Framework und implementierte JWT-Authentifizierung mit Passport.js.Benutzerobjekt auf Client-Seite im Front-End

Benutzer registrieren sich, melden sich mit ihren Benutzernamen und Passwörtern an und erhalten ein JSON-Web-Token, das im Backend generiert wird und zur Authentifizierung weiterer Anfragen verwendet wird.

Was ich erreichen möchte, ist immer eine aktuelle Benutzerinformationen im Front-End anzuzeigen, während Benutzer angemeldet ist. Diese Informationen unterliegen häufigen Änderungen basierend auf dem Benutzer oder sogar andere Benutzer Interaktion mit der API.

Was ist die übliche Technik dafür? Sollte ich ein Benutzerobjekt mit jeder Antwort von der API senden oder sollte ich es einmal als Nutzlast im JWT senden, es auf der Clientseite speichern und es bei Bedarf mit separaten Anforderungen an einen Benutzer-API-Endpunkt aktualisieren?

Kann JWT-Nutzlast tatsächlich sogar zum Speichern solcher Dinge wie Benutzerobjekte verwendet werden, ist es dafür gedacht? Ich halte es für eine schlechte Idee, einige wichtige Informationen außer einer Benutzerkennung in der JWT-Nutzlast zu speichern.

Antwort

3

Ein JWT ist bis zur Ablaufzeit gültig. Das Einbeziehen von Daten in das Token, das sich häufig ändert, bedeutet, dass der JWT ungültig sein könnte, aber trotzdem von Ihrem Server akzeptiert wird. Wenn Sie sich nicht mit Blacklists beschäftigen wollen, überlegen Sie sorgfältig, welche Daten Sie aufnehmen und fordern Sie die anderen Daten dynamisch an.

Aber ohne Benutzerdaten in das Token zu integrieren, profitieren Sie nicht von einem der JWT-Vorteile: Der Server muss nicht in jeder Anfrage Datenbank abfragen, da Sie auf Daten in JWT vertrauen können.

z. Sie können fullname oder dateofbirth einschließen und in Betracht ziehen, roles einzuschließen, wenn sie sich nicht häufig ändern

+0

So, wenn ich es richtig verstehe, sollte ich Daten in JWT Nutzlast speichern, die nicht Änderung, wie persönliche Daten unterliegt. Andere Dinge, d. H. Einige "Punkte", die der Benutzer für einige Aktivitäten verdient, sollten in separaten Anfragen abgefragt werden. Kannst du das bestätigen? – Salivan

+1

Ja, das ist es. – pedrofb

Verwandte Themen