Ich habe Angular SPA und JWT ziemlich gut implementiert, aber es fällt mir immer schwer, ein neues Token zu delegieren.
Meine grundlegende Strategie war:
Was nicht funktionierte, weil mehrere Async-Aufrufe ausgelöst würden und man die Delegate-Funktion erhalten würde, aber dann das Refresh-Token für das zweite verwendet worden wäre und dieses fehlschlagen würde, dann würde der Benutzer abgemeldet werden.
Was ein ähnliches Problem hatte, bei dem der erste Anruf bemerkte, dass es abgelaufen war, und das neue Token abruft, aber da es Async ist, würden die restlichen Anrufe ausgelöst und fehlschlagen usw.
Was ist die grundlegende Strategie hier? Ich habe das Gefühl, dass die App als erstes das JWT überprüfen und ein neues delegieren sollte, wenn es ein schlechtes Token ist, aber in diesem Fall sollte es nicht asynchron sein. Lösche ich das Refresh-Token nicht einfach bei der Verwendung?
Jede Hilfe wäre großartig, ich denke, das ist das letzte große Loch in meinem Verständnis. Danke!
Versuchen Sie es mit Witold Szczerbas "http interceptor" .
Kurz gesagt, die ersten fehlgeschlagenen http-Aufruftrigger und -ereignisse und nachfolgende Aufrufe werden in ein Array geschoben. Nach der Ereignisauslösung haben Sie die Möglichkeit, einige Logik zu machen und dann die fehlgeschlagenen Aufrufe erneut abzuspielen.
Das heißt, Sie sollten wahrscheinlich nur eine Token-Rotation durchführen, bevor Sie das Refresh-Token verwenden müssen. Betrachten Sie zum Beispiel diesen Code, der zu dieser Funktion hinzugefügt werden könnte
%Vor%Tags und Links angularjs authentication jwt single-page-application