@megamage
Люблю грозу в начале мая!

Несколько сессий в sql базе jwt?

Делаю функционал авторизации пользователя. Есть в системе только один пользователь, но авторизаций по этому пользователю может быть несколько с разных устройств. Правильным ли будет решение создать отдельную таблицу для jwt токенов?
То есть при каждом запросе на сервер будет происходить поиск в этой таблице токена и если найдёт, то доступ разрешён.
  • Вопрос задан
  • 43 просмотра
Решения вопроса 2
sergey-gornostaev
@sergey-gornostaev
Седой и строгий
JWT так не используется. Токены вообще хранить не надо.
Ответ написан
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Для JWT часто используют схему с двумя токенами. Основной токен выдаётся на короткое время (от нескольких минут до нескольких часов) и может содержать в себе набор данных, связанных с пользователем (роль, права, и т.п.). Второй токен (refresh-токен) выдаётся на более длительное время (от нескольких часов до нескольких дней), и содержит только идентификатор пользователя.
Основной токен нигде не хранится, refresh-токен записывается в БД с привязкой к пользователю.
Все обычные запросы к серверу сопровождаются основным токеном.
Каждый раз, когда срок жизни основного токена заканчивается, клиент делает запрос на его обновление, передавая при этом refresh-токен. Сервер проверяет по БД, не был ли уже использован данный refresh-токен.
Если refresh-токен просрочен или такого refresh-токена в БД нет, то запрашивается полная аутентификация/авторизация по логину/паролю.
Если refresh-токен уже был использован, то инвалидируются (удаляются из базы) все refresh-токены данного пользователя и требуется полная аутентификация/авторизация.
Если всё в порядке (непросроченный refresh-токен в базе есть и неиспользован), то ставится отметка об его использовании и для клиента генерируется новая пара токенов (основной + refresh).
Периодически БД чистится от токенов с истёкшим сроком действия.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы