Ich benutze Auth0, die mir ein JWT (Json Web Token) und ein RefreshToken gibt. Ich benutze diese JWT in den HTTP-Headern, um mit meinem Backend zu kommunizieren.Wie mit auth0 403 Fehler umzugehen, ohne überall spezifischen Code hinzuzufügen (Retrofit/okhttp/RxAndroid)
Es könnte passieren, dass der Server mir eine 403
gibt, wenn es entscheidet, dass die JWT abgelaufen ist. In diesem Fall kann ich Aut0 bitten, mir ein neues JWT mit dem refreshToken auszugeben. Das heißt, ich rufe das Auth0-Backend an, gebe es an das refreshtoken weiter und es gibt mir ein neues JWT, das ich dann in meinen Anfragen verwenden kann.
Meine Frage ist, wie kann ich dieses Verhalten in meinem gesamten Netzwerkcode effizient schreiben? Ich werde ein paar Endpunkte haben, mit denen ich reden kann, und sie könnten alle die 403.
zurückgeben Ich denke, ich sollte zuerst einen Interceptor machen, der den JWT zu allen Anfragen hinzufügt.
Dann sollte Verhalten sein, das 403 erkennt, macht ruhig einen Netzwerkcall zu Auth0, Abrufen der neuen JWT. Dann sollte die ursprüngliche Anfrage erneut versucht werden, mit dem neuen JWT in seinen Kopfzeilen.
Also würde ich lieber diese 403 Behandlung irgendwo unsichtbar zu meinem anderen Code haben, und definitiv nicht überall neu schreiben müssen.
Alle Hinweise, wie dies zu erreichen ist, werden geschätzt.
-
Um es klar, ich im Grunde bin für Hinweise, wie diese RxAndroid Observable mit zu erreichen. Wenn ein bestimmter Observable den 403 findet, sollte er einen neuen Netzwerkanruf "injizieren".