Для правильной обработки истёкших токенов в веб-приложениях можно использовать refresh-токен. dev.to habr.com Это долгоживущий токен, который позволяет получить новый токен доступа, когда истечёт время жизни старого. dev.to
Процесс обработки: gist.github.com
- Перед каждым запросом клиент проверяет время жизни токена доступа. gist.github.com
- Если оно истекло, клиент отправляет запрос на обновление токенов, передав в нём refresh-токен. gist.github.com
- Сервер получает запись рефреш-сессии по UUID рефреш-токена, сохраняет текущую рефреш-сессию в переменную и удаляет её из таблицы. gist.github.com
- Проверяет текущую рефреш-сессию: не истекло ли время жизни и соответствует ли старый fingerprint новому, полученному из тела запроса. gist.github.com
- В случае негативного результата выдаёт ошибку TOKENEXPIRED/INVALIDREFRESH_SESSION. gist.github.com
- В случае успеха создаёт новую рефреш-сессию и записывает её в БД, создаёт токен доступа и отправляет клиенту access и refresh token. gist.github.com
Также можно задать интервал времени, в котором клиентское приложение должно запросить новый токен заранее, не дожидаясь истечения его срока годности. ru.stackoverflow.com