@Boris007

Как правильно проверять и обновлять refresh jwt?

Нашел в интернете такой пример таблицы для refresh jwt
CREATE TABLE IF NOT EXISTS refresh_tokens (
    id serial PRIMARY KEY,
    user_id INT NOT NULL REFERENCES users (id),
    token VARCHAR (255) NOT NULL UNIQUE,
    iat int NOT NULL,
    exp int NOT NULL
);


Подскажите, как правильно работать с записями jwt в таблице?

1)Пользователь при логировании ищет свою старую запись jwt по каким-то полям или всегда создается новая?
2)При завершении работы access token мы refresh token создаем новый или перезаписываем в текущий, просто меняя значение exp?
И при проверке на наличие актуальности текущего токена, мы его ищем по сходству полей user_id AND exp?
3)При выходе пользователя из аккаунта, мы запись удаляем или как-то аннулируем и при повторной его логировании в нее запишем новый рефреш токен?
4)Как происходит поддержка двух рефреш токенов для разных устройств или браузеров?
  • Вопрос задан
  • 379 просмотров
Решения вопроса 1
petermzg
@petermzg
Самый лучший программист
1. В Refresh токене уже есть нужная информация. И в ответ выдается новый Access Token
2. В подписанном Access Token не получится подменить exp. Так что новый
3. Откуда выходим? В Web client можно просто забыть Access Token. Но если у кого-то останется refresh token, то можно получить новый Access Token.
Если хочется чтобы его нельзя было использовать после выхода, то в Access Token и Refresh token, добавляется RefId. И если RefID в заблокирован, то новый получить Access Token из Refresh будет нельзя.
4. Каждый конект имеет свой Refresh token, так что не получите и там и там одинаковый
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы