在 feathersjs 中使用 JWT 进行身份验证和 session 处理

Authentication and session handling using JWT in feathersjs

我们正在使用 feathersjs - https://feathersjs.com/ real-time 应用程序和 REST API 的框架。 用户名密码是我们用于 JWT 身份验证的身份提供者。

我们可以使用 JWT 创建访问令牌,参考 link - https://docs.feathersjs.com/guides/basics/authentication.html 此 accessToken 现在可用于通过发送 Authorization: Bearer HTTP header.

需要身份验证的其他 REST 请求

如前所述,默认情况下,Feathers 存储在 JWT 负载中的唯一内容是用户 ID。它是一个有状态的令牌,但无法在 JWT 负载中找到任何相同的引用。

我们还能够使用 link - https://docs.feathersjs.com/cookbook/authentication/revoke-jwt.html 撤销 JWT 访问令牌 我们同样使用 redis。

现在的问题是这个 JWT 访问令牌存储在哪里,这个 JWT 是无状态的还是有状态的。

如果这个 JWT 是有状态的,我们真的需要在我们的节点 js 应用程序中维护 session 还是这个 JWT 就足够了。 别的 如果这个 JWT 是无状态的,我们如何在节点 js 应用程序中维护 session。

甚至找不到与刷新令牌相关的任何参考。

谢谢。

使用 JWT 时没有会话,无需进行任何会话处理(参见 this FAQ entry for more information)。客户端必须将其存储在某处(并删除它以注销)。

这里的Stateful只是指在认证请求的时候,有一个额外的获取当前用户信息的请求。用户 ID 存储在 sub (subject) claim of the token. You can see it when encoding the token (e.g. using jtw.io). How to create stateless tokens that does not make a request to get the user information is also documented in the cookbook 中,但通常不是必需的。