前端客户端的用户对象

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 中包含的数据。

例如您可以包含fullnamedateofbirth,如果它们不经常更改,请考虑包含roles

【讨论】:

所以如果我理解正确的话,我应该将数据存储在不会更改的 JWT 有效负载中,例如个人数据。其他事情,即用户为某些活动获得的一些“积分”应该在单独的请求中查询。你能确认一下吗? 是的,就是这样。

以上是关于前端客户端的用户对象的主要内容,如果未能解决你的问题,请参考以下文章

CAS中客户端怎么获取Server端的session信息

前端加密

预测-前端/客户端的未来

记一次前端服务端客户端三方联调的总结

Lync server 2013高可用环境快速查看客户端的版本信息及连接状态

服务端与客户端的交互技术有几种