Следует ли удалять или аннулировать jwt после каждого входа в систему?

Я пытаюсь реализовать функции регистрации и входа в систему, и я использую Spring Boot и стек Java. Я следую этому руководству (вам не нужно нажимать на него, просто поставьте здесь для справки и полноты этого вопроса).

Spring Security MySQL JWT Tutorial - Grokonez

Теперь у меня есть конечная точка для регистрации и входа в систему. После регистрации и добавления пользователя в базу данных я вхожу в систему. Для конечной точки входа я получаю токен jwt. Используя этот токен, я могу получить доступ к ограниченным ресурсам. До сих пор все отлично. Теперь, когда я снова попадаю в конечную точку входа, я получаю еще один токен.

Вот где моя дилемма. Поскольку у меня два токена, я могу войти в систему, используя два токена. Теперь, конечно, у обоих этих токенов есть срок годности (например, как день). Но с точки зрения хорошей практики, должны ли мы аннулировать старый токен, означая, что в любой момент времени будет только ОДИН токен, который любой пользователь может использовать для входа в нашу систему?

Если это так, будет ли это означать, что пользователь не может использовать наше приложение одновременно на обоих устройствах, таких как ноутбук и мобильный телефон? В таком случае, каков верхний предел для токенов active?

Я слышал кое-что о токене обновления и т. д., Но я просто хочу, чтобы это было просто, и меня устраивает наличие только одного токена, называемого токеном доступа.

Итак, если вы думаете, что я должен аннулировать jwt и оставить только один активный jwt для каждого пользователя в любой момент времени, как я могу это сделать? Хранить jwts в db и что-то делать?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
162
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если вы собираетесь хранить токен JWT в базе данных, то нет смысла использовать токен JWT. Поскольку основная причина наличия автономного подписанного токена - избежать проверки базы данных при доступе пользователя к приложению.

Я могу предложить ниже способ избежать создания нескольких активных токенов.

Вы можете сохранить время создания токена JWT (последнее) в базе данных, а затем вы можете перекрестно проверить время последнего создания (сравнить с текущим временем), когда пользователь входит в приложение.

Другие вопросы по теме