Grundlegende Strategie für das Delegate-Aktualisierungstoken, um eine neue JWT zu erhalten

8

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:

  1. Im Auth Interceptor get Auth Fehler = & gt; Delegieren Sie mit Refresh-Token, ersetzen Sie JWT, sonst logout

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.

  1. Vor allem anderen: Token-Ablauf überprüfen, wenn abgelaufen = & gt; delegiere mit Refresh-Token, ersetze jwt, else logout

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!

    
PixMach 11.12.2015, 23:06
quelle

1 Antwort

3

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%     
Cory Silva 18.12.2015 23:08
quelle