Używam Auth0, co daje mi JWT (json web token) i refreshtoken. Używam tego JWT w nagłówkach HTTP do komunikacji z moim zapleczem.Jak radzić sobie z błędem auth0 403 bez dodawania konkretnego kodu wszędzie (Retrofit/okhttp/RxAndroid)
Może się zdarzyć, że serwer poda mi 403
, kiedy zdecyduje, że JWT wygasło. W tym przypadku mogę poprosić Auth0 o wystawienie mi nowego JWT, używając refreshtoken. Oznacza to, że nazywam backend Auth0, przekazuję go refreshtoken i daje mi to nowy JWT, który mogę następnie wykorzystać w moich żądaniach.
Moje pytanie brzmi: jak mogę skutecznie zapisać to zachowanie w całym moim kodzie sieciowym? Będę miał kilka punktów końcowych, z którymi można porozmawiać, i wszystkie one mogą zwrócić 403.
Myślę, że najpierw powinienem stworzyć przechwytujący, który dodaje ŚC dla wszystkich wniosków.
Następnie powinno być zachowanie, które wykrywa 403, cicho robi połączenie sieciowe z Auth0, pobierając nową JWT. Następnie oryginalna prośba powinna zostać wypróbowana ponownie, z nowym JWT w nagłówkach.
Tak więc wolałbym, aby ta obsługa 403 była gdzieś niewidoczna dla mojego innego kodu i zdecydowanie nie musiałem jej przepisywać wszędzie.
Wszelkie wskazówki na temat tego, jak to osiągnąć, zostaną docenione.
-
Żeby było jasne, ja w zasadzie szuka wskazówek, w jaki sposób to osiągnąć stosując RxAndroid obserwabli. Kiedy pewien obserwator znajdzie 403, powinien "wstrzyknąć" nowe połączenie sieciowe.