2017-01-16 9 views
1

Я разрабатываю внутренний API в Node.js с использованием рамки Express.js и реализовал аутентификацию JWT с использованием Passport.js.Пользовательский объект на стороне клиента в интерфейсе

Пользователи регистрируются, подписываются с использованием своих имен пользователей и паролей и получают токен json web, созданный в фоновом режиме, который затем используется для аутентификации дальнейших запросов.

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

Какова общая техника для этого? Должен ли я отправлять пользовательский объект с каждым ответом от API или отправлять его один раз в качестве полезной нагрузки в JWT, хранить его на стороне клиента и обновлять его по запросу с отдельными запросами к какой-либо конечной точке API-интерфейса пользователя?

На самом деле, может ли полезная нагрузка JWT использоваться для хранения таких вещей, как пользовательские объекты, предназначена ли она для этого? Поскольку я считаю, что плохая идея хранить важную информацию, отличную от некоторого идентификатора пользователя в полезной нагрузке JWT.

ответ

3

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

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

E.g. вы можете включить fullname или dateofbirth и подумайте о включении roles, если они не меняются часто

+0

Так что, если я правильно понимаю, я должен хранить данные в полезной нагрузке JWT, которая не подлежит изменению, например личные данные. Другие вещи, то есть некоторые «точки», которые пользователь зарабатывает на какую-либо деятельность, должны запрашиваться в отдельных запросах. Можете ли вы это подтвердить? – Salivan

+1

Да, вот и все. – pedrofb