Re Initaite - последний отказавший запрос после обновления токена. - PullRequest
0 голосов
/ 10 апреля 2019

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

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

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

1 Ответ

0 голосов
/ 10 апреля 2019

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

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

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

...