【问题标题】: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 有效负载中存储一些用户标识符以外的重要信息是个坏主意。

【问题讨论】:

    标签: node.js session express passport.js jwt


    【解决方案1】:

    JWT 在到期之前一直有效。在令牌中包含频繁更改的数据意味着 JWT 可能无效,但无论如何它都会被您的服务器接受。如果您不想处理黑名单,请仔细考虑您将包含哪些数据并动态请求其他数据。

    但是,如果不将任何用户数据包含到令牌中,您就无法利用 JWT 的优势之一:服务器不需要在每个请求中查询数据库,因为您可以信任 JWT 中包含的数据。

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

    【讨论】:

    • 所以如果我理解正确的话,我应该将数据存储在不会更改的 JWT 有效负载中,例如个人数据。其他事情,即用户为某些活动获得的一些“积分”应该在单独的请求中查询。你能确认一下吗?
    • 是的,就是这样。
    猜你喜欢
    • 2018-02-03
    • 1970-01-01
    • 1970-01-01
    • 2016-06-19
    • 2014-09-19
    • 2021-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    相关资源
    最近更新 更多