Как лучше всего решить проблему с заменой токенов в случае асинхронных запросов?
Здравствуйте,
собственно, вопрос: Существует стандартная REST API клиент-сервер пара предоставляющая доступ к данным с помощью токена. Токены работают по принципу access-refresh. В случае синхронной отправки запросов на сервер проблем не возникает:
- К: отправил первый запрос
- С: вернул первый первый запрос с просьбой замены access
- К: отправил запрос замены
- С: отправил новую пару токенов
- К: принял токены и заново отправил первый запрос
- К: получил ответ и отправил второй запрос
Но в случае асинхронной отправки запросов со стороны клиента может возникнуть ситуация, когда после генерирования новой пары токенов на сервере, но до их получения клиентом, отправляется второй запрос, который сервером отвергается по причине несоответствия access токена.
Как лучше всего решить задачу с заменой токенов в данном случае?
Самым приемлемым вариантом на мой взгляд является что то вроде повторной отправки запроса через 400-500ms (с уже новым access токеном), но это негативно отразится на скорости открытия страниц в приложении.
Является ли access-refresh подход уместным в данном случае, или есть что-то более подходящее? Буду благодарен за советы/ссылки к прочтению.