Должны ли мы удалять или аннулировать jwt после каждого входа? - PullRequest
0 голосов
/ 20 декабря 2018

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

Учебное пособие по Spring Security MySQL JWT - Grokonez

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

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

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

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

Итак, если вы думаете, что я должен сделать недействительным jwt и сохранить только один активный jwt на пользователя в любой момент времени, как бы я это сделал?Сохранить JWTS в БД и сделать что-нибудь?

1 Ответ

0 голосов
/ 28 декабря 2018

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

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

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

...