Learn-json-web-tokens: Webspeicher und progressive Erweiterung

Erstellt am 15. Okt. 2015  ·  9Kommentare  ·  Quelle: dwyl/learn-json-web-tokens

In #5, #46 und den meisten Online-Diskussionen scheinen die Leute standardmäßig lokalen Speicher / Sitzungsspeicher für JWTs zu verwenden, anstatt in einem Cookie. Dies erfordert die Verwendung von AJAX in der gesamten App, damit der Header jedes Mal aus dem Webspeicher festgelegt werden kann. Ich verstehe, dass dies die Fälschung von standortübergreifenden Anfragen verhindert (und dafür im Wesentlichen die Richtlinie zum gleichen Ursprung nutzt).

Wie passt dies zur progressiven Verbesserung, bei der einige Geräte Javascript überhaupt nicht unterstützen?

enhancement question

Hilfreichster Kommentar

Nicht unbedingt, obwohl dies von Ihrem Toolset abhängt. Angular zum Beispiel erlaubt dir, dies einmal einzustellen.. ich denke, das geht sogar mit jquery problemlos.

$.ajaxSetup({
   headers: { 'x-my-custom-header': 'some value' }
});

Ein weiteres Problem mit Cookies als Transportschicht für Token besteht darin, dass Sie 2 Zeitüberschreitungen verwenden und nicht den Vorteil haben, CORS-Probleme zu vermeiden. Cookies erschweren den Zugriff auf RESTful-Webdienste. Es ist viel einfacher, einen Curl-One-Liner zu erstellen, um mit einem Token auf eine Ressource zuzugreifen, als in einem Cookie zu bündeln.

Alle 9 Kommentare

_Another_ _GREAT _ Frage vom _Wizard_! :+1:
Für die Zwecke dieses Mikrobeispiels denke ich, dass es "_Ok_" ist, localStorage .
Seien wir ehrlich, _jeder_ verwendet React heutzutage ohne Rücksicht auf Barrierefreiheit.
All die coolen Kids interessieren sich _weg_ mehr für _Shiny New Frameworks_ als für _Progressive Enhancement_...

Jedoch...
In unserer _aktuellen_ App verwenden wir cookies _genau_ für Abwärtskompatibilität und progressive Verbesserung.
Deshalb haben wir die Option zu JWT2 hinzugefügt ... siehe: https://github.com/dwyl/hapi-auth-jwt2#want -to-sendstore-your-jwt-in-a-cookie

Zusammenfassend: Ich würde dem Beispiel in diesem Repo localStorage hinzufügen und ein comment hinzufügen, das die Leute darüber informiert, dass die Verwendung von Cookies zum Speichern von JWTs "_Ohkay_" ist, da Sie immer noch die gesamte _horizontale Skalierbarkeit_ und Sicherheit erhalten Vorteile der Verwendung von JWTs, während der _Aufwand_ gespart wird, das JWT setzen/abrufen und bei jeder Anfrage zu den Headern hinzufügen zu müssen...

@rjmk & @nelsonic

Gibt es einen bestimmten Grund, warum das im lokalen Speicher gespeicherte JWTS in den Headern gesendet werden sollte, oder ist bei der Verwendung von https://www.npmjs.com/package/node-localstorage etwas anfällig/"falsch"

@Jbarget baust du ein "_Universal_", das erfordert, dass du Zugriff auf localStorage auf dem Server hast? Wenn dies Ihr Anwendungsfall ist, wird das Modul node-localstorage Ihren Zweck erfüllen.
_Allerdings_ müssen Sie das JWT immer noch _manuell_ in header senden, um es in "AJAX"-Anfragen an den Server zurückzusenden... also bringt es nicht viel Vorteil, ein _Modul_ zu verwenden, wenn Sie alles tun möchten ist das Token holen/setzen auf/von localStorage ...

@nelsonic wir werden es wahrscheinlich in den Headern jeder Anfrage einstellen, danke für die Klarheit!

@Jbarget haben Sie _Einwände_ gegen das Speichern des JWT in einem Cookie? (_es vereinfacht dein Leben..._)

@nelsonic keine Einwände, bin ich richtig in der

Es vereinfacht Ihre App, denn sobald das Cookie vom Server _gesetzt_ wurde, enthalten _alle_ gesendeten/empfangenen Anfragen immer das Cookie. was bedeutet, dass Sie danach _nie_ daran _nachdenken_ müssen.
Im Gegensatz dazu bedeutet das Speichern des JWT in localStorage dass Sie keine Nicht-Ajax-Interaktion haben können und Sie sich an SET den auth Header für jede Anforderung an den Server erinnern müssen. .

Nicht unbedingt, obwohl dies von Ihrem Toolset abhängt. Angular zum Beispiel erlaubt dir, dies einmal einzustellen.. ich denke, das geht sogar mit jquery problemlos.

$.ajaxSetup({
   headers: { 'x-my-custom-header': 'some value' }
});

Ein weiteres Problem mit Cookies als Transportschicht für Token besteht darin, dass Sie 2 Zeitüberschreitungen verwenden und nicht den Vorteil haben, CORS-Probleme zu vermeiden. Cookies erschweren den Zugriff auf RESTful-Webdienste. Es ist viel einfacher, einen Curl-One-Liner zu erstellen, um mit einem Token auf eine Ressource zuzugreifen, als in einem Cookie zu bündeln.

Dieses Problem wird automatisch geschlossen, da es älter als ein Jahr ist. Bitte zögern Sie nicht, es erneut zu öffnen, wenn es für Ihr Projekt noch relevant ist.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

rhewitt22 picture rhewitt22  ·  5Kommentare

nelsonic picture nelsonic  ·  5Kommentare

sarneeh picture sarneeh  ·  3Kommentare

KumarS-Naveen picture KumarS-Naveen  ·  3Kommentare

NE-SmallTown picture NE-SmallTown  ·  5Kommentare