0

Короче говоря, у меня есть структура в моем приложении angularjs, которое в основном следующее: 1. Существует «authService», который отвечает за запрос токенов доступа и обновляет токены , 2. Существует «authInterceptorService», который добавляет токен в заголовок запроса, однако сложная часть здесь: эта услуга зависит от authService, для генерации нового токена доступа с использованием токена обновления в случае, если токен доступа истёк и запрос 401en, что означает, что в конечном итоге будет циклическая зависимость, когда я использую $ httpProvider службы зарегистрировать перехватчик:Angularjs Interceptor Circular Dependency при использовании токенов обновления

authService < - authInterceptorService < - $ HTTP < - authService

Мои вопросы, как можно обойти эту проблему, когда ваш перехватчик должен иметь возможность выпускать новый токен доступа с использованием токена обновления и выполнить запрос на запрос?

ответ

1

Один из способов обойти это можно было бы использовать для системы событий Angular. Поскольку вы имеете дело с услугами, вам, вероятно, потребуется трансляция события ($ emit) и прослушивание ($ on) на $ rootScope.

Например, вы можете настроить прослушиватель для события «tokenExpired», которое вызывает службу обновления токена, что при успешном запуске события «tokenRefreshed». Когда запрос равен 401, вы выпустите событие tokenExpired и зарегистрируете одноразовый прослушиватель для события tokenRefreshed, чтобы повторно отправить запрос после обновления.

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

Смежные вопросы