2017-01-16 164 views
1

我正在使用Express.js框架在Node.js中开发后端API,并使用Passport.js实施了JWT认证。前端客户端的用户对象

用户注册,使用他们的用户名和密码登录,并接收后端生成的json Web令牌,然后用于验证其他请求。

我想实现的目标是在用户登录时始终在前端显​​示一段当前用户信息。该信息经常根据用户甚至其他用户与API的交互进行更改。

这是什么常见技术?我应该使用API​​中的每个响应发送一个用户对象,还是应该将它作为JWT中的有效内容发送一次,将其存储在客户端并根据需要进行更新,并向个别用户API端点提出单独请求?

实际上,JWT有效载荷甚至可以用来存储诸如用户对象之类的东西吗?因为我觉得在JWT有效负载中存储除某些用户标识符以外的重要信息是一个糟糕的主意。

回答

3

JWT有效期至到期时间。在频繁更改的令牌中包含数据意味着JWT可能无效,但无论如何将由您的服务器接受。如果您不想处理黑名单,请仔细考虑您要包含哪些数据,并请求其他数据。

但是,如果不包含任何用户数据到令牌中,您不会从JWT的优势中获益:服务器无需在每个请求中查询数据库,因为您可以信任JWT中包含的数据。

E.g.您可以包括fullnamedateofbirth,并考虑到包括roles,如果他们不经常改变

+0

所以,如果我理解正确的话,我应该存储在JWT有效载荷,是不是随时更改,如个人数据。其他事项,即用户为某些活动赚取的某些“积分”应该在不同的请求中查询。你能证实这一点吗? – Salivan

+1

是的,就是这样。 – pedrofb