Wie man den Fehler auth0 403 behandelt, ohne überall spezifischen Code hinzuzufügen (Retrofit / okhttp / RxAndroid)

Ich verwende Auth0, das mir ein JWT (JSON-Web-Token) und ein Auffrischungs-Token gibt. Ich verwende dieses JWT in den http-Headern, um mit meinem Backend zu kommunizieren.

Es kann vorkommen, dass der Server mir ein @ gi403, wenn entschieden wird, dass die JWT abgelaufen ist. In diesem Fall kann ich Auth0 bitten, mir mithilfe des Auffrischungscodes eine neue JWT auszustellen. Das heißt, ich rufe das Auth0-Backend auf, übergebe es dem Refreshtoken und erhalte eine neue JWT, die ich dann in meinen Anfragen verwenden kann.

Meine Frage ist, wie kann ich dieses Verhalten effizient in meinen gesamten Netzwerkcode schreiben? Ich werde ein paar Endpunkte haben, mit denen ich sprechen kann, und sie alle könnten die 403 zurückgeben.

Ich denke, ich sollte zuerst einen Interceptor erstellen, der die JWT zu allen Anfragen hinzufügt.

Dann sollte es ein Verhalten geben, das den 403 erkennt und im Hintergrund einen Netzwerkaufruf an Auth0 ausführt, um den neuen JWT abzurufen. Dann sollte die ursprüngliche Anfrage erneut versucht werden, mit dem neuen JWT im Header.

So würde ich es vorziehen, wenn diese 403-Behandlung irgendwo unsichtbar für meinen anderen Code wäre und ich sie definitiv nicht überall neu schreiben müsste.

Wie Sie dies erreichen, erfahren Sie von uns.

-

Um klar zu sein, suche ich im Grunde nach Hinweisen, wie dies mit RxAndroid Observables erreicht werden kann. Wenn ein bestimmter Observable den 403 findet, sollte er einen neuen Netzwerkaufruf "einschleusen".

Antworten auf die Frage(4)

Ihre Antwort auf die Frage