Как обработать ошибку auth0 403 без добавления определенного кода везде (Retrofit / okhttp / RxAndroid)

Я использую Auth0, который дает мне JWT (веб-токен json) и маркер обновления. Я использую этот JWT в заголовках http для связи с моим бэкэндом.

Может случиться так, что сервер дает мне403, когда он решает, что JWT истек. В этом случае я могу попросить Auth0 выдать мне новый JWT с использованием маркера обновления. Это означает, что я вызываю бэкэнд Auth0, передаю ему маркер обновления, и он дает мне новый JWT, который я затем могу использовать в своих запросах.

У меня вопрос, как я могу эффективно написать это поведение во всем моем сетевом коде? У меня будет пара конечных точек, с которыми можно поговорить, и все они могут вернуть 403.

Я думаю, что я должен сначала сделать перехватчик, который добавляет JWT ко всем запросам.

Затем должно быть поведение, которое обнаруживает 403, тихо выполняет сетевой вызов Auth0, получая новый JWT. Затем следует повторить первоначальный запрос с новым JWT в его заголовках.

Поэтому я предпочел бы, чтобы этот 403 обрабатывал где-то невидимое для моего другого кода, и определенно не приходилось бы переписывать его везде.

Любые указатели о том, как этого добиться, будут оценены.

-

Чтобы было ясно, я в основном ищу указатели на то, как этого добиться с помощью RxAndroid Observables. Когда определенный Observable находит 403, он «вводит» новый сетевой вызов.

Ответы на вопрос(2)

Ваш ответ на вопрос