Повторно инициируйте последний неудачный запрос после предоставления токена обновления

У меня есть приложение angular 4, которое отправляет несколько запросов одновременно один за другим в API, защищенный OAuth2, я сталкиваюсь с проблемой, когда запрос завершается с ошибкой с кодом состояния 401, мне нужно создать новый токен доступа и повторно инициировать тот же запрос к API и вернуть ответ методу, который его ожидает. 1- Все запросы терпят неудачу один за другим - поэтому, чтобы удержать другой запрос для продолжения, я добавил цикл, который удерживает запрос, поступающий на сервер, когда идет генерация токена. 2- Чтобы инициировать запрос, я снова добавил строку next.handle(request) в блок, но она не работала, затем я попытался вызвать метод this.intercept(request,next), даже если он не работал, после этого последний добавленный мной подход заключался в повторной обработке запроса в блоке ошибок. так что теперь код метода перехвата выглядит так, как показано ниже, но затем я понял, что запрос даже не обрабатывается дальше, даже если я попытаюсь обработать запрос. Есть несколько руководств, просто предлагающих next.handle(request), но в моем случае это не работает должным образом.
Только мне удалось обработать запросы, которые приходят после неудачного запроса, потому что до этого генерируется новый токен доступа, но неудавшийся запрос просто отбрасывается.

Пожалуйста, смотрите поток кода в связь!

Я уже потратил много времени на отладку

Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
0
0
370
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я смог добиться этого, добавив Observable.fromPromise в метод перехвата, а затем вызвав метод, который возвращает обещание, и метод рекурсивно вызывался до тех пор, пока я не получу токен обновления, но добавляя задержку между каждым вызовом, чтобы я не закончил до вызова рекурсивно несколько раз.

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

Ссылка : https://www.illucit.com/en/angular/angular-5-httpinterceptor-add-bearer-token-to-httpclient-requests/

Я изменил подход и удалил раздел тайм-аута, который приводит к сбою всех одновременных запросов, но токен обновляется, и все последующие запросы, которые были инициированы и не выполнены, повторно инициируются.

Ahmad Qureshi 07.06.2019 07:48

Другие вопросы по теме