Как правильно использовать refresh token на разных устройствах?
Подскажите пожалуйста, при авторизации на клиенте в куках сохраняется два токена один из них access другой refresh, при истечении срока access токена, клиент отправляет refresh и сервер выдает клиенту два новых токена, дело в чем, дело в том что если пользователь войдет с другого устройства например с телефона, то refresh токен на первом устройстве уже будет невалиден. Refresh токен хранится в БД таблице users, в таблице поля: email, password, refresh_token. То есть при авторизации на другом устройстве поле refresh_token обновится и на первом устройстве refresh токен который в куках уже невалиден. Как сделать так чтобы можно было использовать refresh токен, не только на одном устройстве? Видел, что нужно делать что-то с идентификатором устройства, но не понял, так же не понял откуда взять этот идентификатор устройства. Буду благодарен если подробно опишете как правильно организовать данный процесс.
Ответы (2 шт):
Столкнулся с похожей проблемой, на нашем проекте решили определять устройство по данным из user-agent в header-ах. Понятно, что при обновлении браузера появится "новое устройство", но это допустимая погрешность.
Пользователь может иметь множество access токенов на разных устройствах. В бд создается таблица tokens с двумя колонками user_id (foreign key к таблице users), refresh_token. Таким образом можно делать : logout с разных устройств инвалидируя соответсвующий пришедший токен, login генерируя новый токен для юзера определенного по паролю и логину.