У меня есть промежуточное ПО redux-saga
для облегчения асинхронных операций c, и все вызовы API выполняются через sagas. Теперь реализуем OAuth2
, Я хочу проверить, не истек ли мой токен, затем перед обновлением переопределить его sh с помощью токена refre sh. Проблема в том, что я не могу найти решение перехватить сагу, чтобы сделать это. Мое значение expiresAt
находится в состоянии хранилища, и его следует использовать для принятия решения об истечении срока действия токена доступа.
То, что я хочу построить
Перехватчик, который запускается перед каждой сагой и позволяет получить доступ к состоянию избыточности, а также запускать действия избыточности. Чтобы я мог получить доступ к expiresAt
из магазина, чтобы сравнить его с текущим временем и датой, а затем, если срок действия токена истек, запустите refre sh api, чтобы обновить его sh, а затем отправьте действия магазина, и тогда настоящая сага сможет работать с обновленным токеном. .
Подходы, найденные до сих пор:
- с использованием effectMiddleWares : Это не раскрывает состояние избыточности или позволяет выполнять эффекты саги внутри, так как это не генератор (работник)
- Использование подстановочного действия : пытался работать с этим, но это не гарантирует, что рабочая сага, предназначенная для порождения для инициируемого действия, ждет, пока эта сага с подстановочными знаками будет выполнена первой .
- Использование глобального состояния для хранения expiresAt и помещение лога c token refre sh на сетевом уровне, т. е. прошлые саги : я не убежден в этом.
Любая помощь приветствуется. Кроме того, если я не думаю в правильном направлении с проблемой, пожалуйста, дайте мне знать о правильном способе сделать это. Может быть без саги.