在不使会话无效的情况下更新 Auth0 JWT

Updating Auth0 JWT without invalidating sessions

我有一个使用 Auth0 的应用程序,是用 ReactJS 和 NodeJS 制作的。大多数情况下一切正常。

设计是这样的,我们用管理标志装饰每个请求,并且我在我的 JWT 令牌中编码了 Auth0 配置文件。

这样我可以做如下事情:

  server.route({
    method: 'POST',
    url: '/.../...',
    preValidation: server.authenticate,
    handler: async (req, res) => {
      const { user } = req;
      if (!user['admin']) {
        ...
      }
      ...
    }
  });

除了一个我没有解决的问题外,我对这种方法很满意。如何处理来自用户的更新他们自己的个人资料的请求。配置文件更新后,JWT 保持不变并且配置文件信息已过时。

除了在每次配置文件更新时注销用户之外,还有什么办法可以解决这个问题吗?有没有办法在不结束会话的情况下更新 JWT?

这实际上是不可能的,因为它违背了 jwts 无状态的目的。但是,在这个特定的用例中,更新配置文件后,您可以创建一个新的 jwt 并将其添加为响应的一部分,以便客户端获取新令牌并将其用于进一步的请求

根据我的研究,解决方案是:

每次个人资料更新后自动重复登录,或通知最终用户并让他们选择是否要重复登录。