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