Сачин Кумар
Эта статья заключается в том, как я обрабатывал код состояния 401 в ответ API. Я покажу вам, как получить новый токен доступа, используя токен обновления с Redux наблюдаемый В оформлении Реагировать проект.
Однако прежде чем мы начнем, мы должны понимать некоторые предпосылки, которые помогут понять решение лучше. Это общее архитектурное решение для общей проблемы, поэтому вам не нужно знать Redux читать дальше. Начнем!
Токен доступа
Это как служба авторизации работает, когда пользователь успешно входит в систему и извлекает токен доступа и обновляет токен в успешной аутентификации.
Обновить токен
Нам нужно получить новый токен доступа, используя этот токен обновления, затем снова ударил то же API с новым токеном доступа. Мы хотим сделать это без пользователей, зная, что их сеанс истек или API выбрасывает ошибку.
Давайте понять, как работает токен обновления с сервером. Мы извлекаем новый токен доступа, когда API бросает код состояния 401.
Вызов Token Token Token получает новый токен доступа с сервера AUTH AUTH, используя Token Token, сохраненную в первой аутентификации.
Мы можем лучше понять весь этот процесс через эту простую таблицу потока.
Наблюдается
Вы можете думать о наблюдаемом в качестве массива, чьи предметы прибывают асинхронно со временем. Наблюдаемые помогите вам управлять асинхронными данными , например, данные, исходящие из бэкэндской службы.
В RXJS это может стать довольно сложным при воспроизведении с наблюдаемыми потоками. Не волнуйтесь – мы собираемся упростить это с помощью простых кусков кода.
Начнем с простого вызова API в Redux-наблюдаемым. Это то, такая простой функция для APTE APTE:
Решение
Теперь мы вооружены основными понятиями. Давайте посмотрим, как мы можем обрабатывать код состояния состояния 401 (Invalid_token или Session) в ответе API. Мы также посмотрим, как мы можем получить новый токен доступа, используя токен обновления в Redux.
Мы должны сделать два изменения в приведенной выше функции:
- Оберните наш вызов API в наблюдаемые. Довери (). Мы хотим получить ухудшение этой функции, чтобы снова позвонить, когда получен новый данный токен доступа.
- Когда мы получаем статус 401 в ошибке Catch. Нам нужно сделать вызов API, чтобы получить новый токен доступа. Мы используем токен обновления обновления в первой успешной аутентификации.
Давайте посмотрим на различия между двумя функциями:
- Функция Catch всегда дает Источник исходного потока. Мы можем использовать это, чтобы начать поток снова, который не удалось из-за неверного токена доступа.
- Теперь начните новый поток событий, чтобы прослушать обновленные события успеха токена. Мы останавливаемся, когда API обновленного токена не удается (используйте TUTEUNTIL для этого).
- Теперь убедитесь, что вы используете Возьми Оператор, чтобы всегда получить первое событие потока. Если у вас есть несколько потоков, ваш выходной поток может быть скомпрометирован.
- Если новый токен доступа был получен, затем используйте Mergemap, чтобы объединить источник предыдущего потока. Мы снова объединяем его в родительский поток, и это позвонит функцию получения данных с новым токеном доступа.
- Теперь вам может быть интересно, как работает слияние. Таким образом, объединить независимо призывать и запустите свой собственный поток для получения нового токена доступа с использованием токена обновления (проверьте следующую функцию). Когда появится успех токена обновления, он попадет в Шаг 2 и так далее.
Мы можем использовать этот подход для обработки более специальных случаев для разного кода состояния, как 500, 403.
Protip : Обязательно проверьте наличие бесконечного контура, если токен Token Token API дает 401. Вы можете поддерживать счетчик на каждом обновлении Token Call. Если число превышает, остановите поток. Затем выполните любую обработку ошибок на нем, например, показывая сообщение о том, что произошла ошибка, и выходит из системы.
Заключение
Мы внедрили неверный обработчик токена, используя API Token Token с помощью redux-наблюдаемых в реакции. Этот подход может быть использован для обработки других специальных случаев API.
Я надеюсь, что вам понравился пост, если вам понравится, следуйте за мной Твиттер а также Гадость Для больших советов и статей JavaScript. ?
Некоторые полезные ресурсы
- https://redux-observable.js.org/
- https://rxjs-dev.firebaseapp.com/api
- https://rxjs-dev.firebaseapp.com/api/index/function/defer
- https://rxjs-dev.firebaseapp.com/api/index/function/merge
Оригинал: “https://www.freecodecamp.org/news/how-to-get-a-new-access-token-using-redux-observables-and-the-refresh-token-api-d38d875a8add/”