Сеанс против токена JWT в nodejs с большой полезной нагрузкой - PullRequest
0 голосов
/ 12 марта 2019

Я работаю над проектом nodejs и пришел из PHP фона.Я очень впечатлен разработкой внешнего интерфейса и бэкэнда и общением с вызовами API.

# Проблема: Мне нужно аутентифицировать пользователя и хранить некоторые данные пользователя (что всегда необходимо всервер), эти пользовательские данные, которые приводят к увеличению размера полезной нагрузки jwt и токена jwt, будут большими.

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

Это процесс.Но у меня есть некоторые пользовательские данные, которые всегда нужны в nodejs, поэтому увеличивается размер полезной нагрузки JWT и размер токена JWT.Поэтому клиент всегда отправляет токен большого размера каждый раз.

Я использовал сеансы в php для поддержки пользовательских данных.Если я использую сеансы для аутентификации, это будет с сохранением состояния, верно?

# Сомнения:

  1. Есть ли способ сохранить зарегистрированные данные пользователя всервер?
  2. Как уменьшить длину токена JWT, если я использую большую полезную нагрузку?

Обновлено:

Также если яиспользуя сеансы, он использует базу данных для хранения сеансов. Поэтому необходим вызов БД.

Что, если я использую токен небольшой полезной нагрузки (например, userid) для аутентификации и после аутентификации выполняю вызов БД с userid, чтобы получитьподробнее?

В обоих методах вызов БД необходим?Какой метод кажется лучше?

1 Ответ

1 голос
/ 12 марта 2019

Использование сеансов представило бы состояние сервера, но позволяет хранить пользовательские данные и данные сеансов на сервере. Только идентификатор сеанса должен быть предоставлен клиенту.

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

Сохранение сеансов на сервере решит ваши проблемы.

Это также дает серверу полный контроль над сессиями. Когда пользователь выходит из системы, сервер может удалить сеанс. Когда клиент удаляет свой токен JWT, вы не можете быть абсолютно уверены, что пользователь вышел из системы. Сам токен все еще действует.

Использование JWT в качестве контейнера сеансов, как правило, плохая идея. Это только вводит несколько проблем безопасности, которые вы должны решить самостоятельно. Вы должны убедиться, что сторонний JavaScript не читает токен, просто чтобы назвать одну проблему. Есть много постов в блоге, в которых подробно объясняются эти проблемы (поиск «Прекратить использование JWT для сессий»), но я могу только посоветовать не использовать JWT для сессий. Сессии не плохая вещь!

...