gpt4 book ai didi

node.js - 在 NodeJS 中使 JWT token 无效

转载 作者:搜寻专家 更新时间:2023-11-01 00:24:11 28 4
gpt4 key购买 nike

我关注了这个tutorial用于使用 JWT token 。 token 过期设置为只有 5 分钟,但是如果我想在使用 1 分钟后使 token 失效怎么办?我希望能够对 /api/logout 进行 API 调用,这应该会删除我的 token 。

我正在使用 Express 和 Node。

从我收集到的信息来看,我的选择似乎是拥有一个存储 token 的 token 数据库。当我想让我的 token 过期时,我会从数据库中过期/删除 token 。

我也看到有人随便说从物理硬空间中“移除” token ,但我无法弄清楚 token 物理存储在哪里以供我移除它。

最佳答案

JWT token 身份验证的一般好处是 token 可以包含您通常保存在 session 存储中的所有 session 信息。这节省了大量资源,尤其是在请求到响应时间,因为您不必在每个请求上查找 session 数据 - 客户端会为您提供所有这些。

但是,它的代价是无法在您选择的时间撤销 JWT token ,因为您失去了对状态的跟踪

在数据库中某处保留无效 token 列表的明显解决方案有点消除了上述好处,因为您必须在每次请求时再次查询数据库。

更好的选择是发行短期 JWT token ,即 token 仅在一分钟内有效。对于 Web 应用程序,普通用户可能会在一分钟内执行多个请求(用户在您的应用程序中导航)。您可以为每个用户提供一个持续一分钟的 JWT token ,当带有过期 token 的请求到达时, 您只需向他们颁发一个新 token 即可。

更新:在出示过期 token 后颁发新的访问 token 是一个非常糟糕的主意 - 您应该将过期 token 视为无效 token ,就好像它是伪造的一样。更好的方法是让客户出示 refresh token这将证明用户的身份,然后才颁发新的访问 token 。请注意,验证刷新 token 必须是有状态操作,即。您必须在数据库中某处列出每个用户的所有有效刷新 token ,因为如果刷新 token 被泄露,用户必须有办法使该 token 无效。

关于node.js - 在 NodeJS 中使 JWT token 无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29087552/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com