@gacbhp

Как правильно использовать refresh token на разных устройствах?

Подскажите пожалуйста, при авторизации на клиенте в куках сохраняется два токена один из них access другой refresh,
при истечении срока access токена, клиент отправляет refresh и сервер выдает клиенту два новых токена, дело в чем, дело в том что если пользователь войдет с другого устройства например с телефона, то refresh токен на первом устройстве уже будет невалиден. Refresh токен хранится в БД таблице users, в таблице поля: email, password, refresh_token. То есть при авторизации на другом устройстве поле refresh_token обновится и на первом устройстве refresh токен который в куках уже невалиден. Как сделать так чтобы можно было использовать refresh токен, не только на одном устройстве?
Видел, что нужно делать что-то с идентификатором устройства, но не понял, так же не понял откуда взять этот идентификатор устройства. Буду благодарен если подробно опишете как правильно организовать данный процесс.
  • Вопрос задан
  • 244 просмотра
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Каждое устройство - отдельный клиент и получает свою пару токенов. В отдельную таблицу базы пишутся записи (id_пользователя, refresh_токен, время_окончания_токена, статус).
При запросе обновления если этот токен отмечен в базе как использованный, то все токены клиента удаляются из базы как скомпрометированные и возвращается требование аутентификации по логину/паролю.
Если токен просрочен или его нет в базе, то возвращается требование аутентификации по логину/паролю.
Если токен есть в базе и ещё не использован, то токен отмечается как использованный и выдаётся новая пара токенов.
Периодически из базы удаляются токены с истёкшим сроком действия.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
19 апр. 2024, в 03:52
1000 руб./за проект
19 апр. 2024, в 03:01
1000 руб./за проект
18 апр. 2024, в 21:56
2000 руб./за проект