前端客户端的用户对象
Posted
技术标签:
【中文标题】前端客户端的用户对象【英文标题】:User object on client side in front-end 【发布时间】:2017-05-31 06:51:06 【问题描述】:我正在使用Express.js
框架在Node.js
中开发一个后端API,并使用Passport.js
实现JWT 身份验证。
用户注册,使用他们的用户名和密码登录,并接收在后端生成的 json Web 令牌,然后用于验证进一步的请求。
我想要实现的是在用户登录时始终在前端显示一条当前用户信息。该信息会根据用户甚至其他用户与 API 的交互而频繁更改。
这方面的常用技术是什么?我应该使用来自 API 的每个响应发送一个用户对象,还是应该将其作为 JWT 中的有效负载发送一次,将其存储在客户端并通过对某个用户 API 端点的单独请求按需更新它?
实际上,JWT 有效负载甚至可以用于存储用户对象之类的东西,它是为此而设计的吗?我觉得在 JWT 有效负载中存储一些用户标识符以外的重要信息是个坏主意。
【问题讨论】:
【参考方案1】:JWT 在到期之前一直有效。在令牌中包含频繁更改的数据意味着 JWT 可能无效,但无论如何它都会被您的服务器接受。如果您不想处理黑名单,请仔细考虑您将包含哪些数据并动态请求其他数据。
但是,如果不将任何用户数据包含到令牌中,您就无法利用 JWT 的优势之一:服务器不需要在每个请求中查询数据库,因为您可以信任 JWT 中包含的数据。
例如您可以包含fullname
或dateofbirth
,如果它们不经常更改,请考虑包含roles
【讨论】:
所以如果我理解正确的话,我应该将数据存储在不会更改的 JWT 有效负载中,例如个人数据。其他事情,即用户为某些活动获得的一些“积分”应该在单独的请求中查询。你能确认一下吗? 是的,就是这样。以上是关于前端客户端的用户对象的主要内容,如果未能解决你的问题,请参考以下文章