【发布时间】:2022-01-21 05:56:00
【问题描述】:
我正在构建一个博客应用程序。我使用了 node.js、expressjs、mongodb 和 reactjs。这就是我在应用中实现 jwt 系统的方式:
当用户登录时,用户会生成 accessToken 和 refresh_Token。 accessToken 将在 15 分钟后过期,而 refresh_Token 在 30 天后过期。我还将 refresh_Token 存储在 redis 数据库中。
我为刷新令牌创建了一个路由,以便用户可以在不注销的情况下生成另一个 accessToken。现在,在通过刷新路由重新生成一个新的 accessToken 时,用户也生成了一个新的 refresh_Token。我读到我应该这样做。 我的问题是:每次生成新的 accessToken 和 refresh_Token 时,以前的 refresh_Tokens 会发生什么?由于 refresh_Token 路由每 15 分钟调用一次以在 30 天到期之前生成新的 accessToken 和 refresh_Token 吗?他们被保存在某个地方吗? 使用 redis.set(),以前的 refresh_Tokens 总是被新的替换。所以,我在redis数据库中看不到之前的token。它们在过期和失效前的 30 天内保存在哪里?
【问题讨论】:
-
它们在过期和失效前的 30 天内保存在哪里?这不应该是您逻辑的一部分吗?
-
刷新令牌生成时,存储在redis数据库中。我就是这样写的。现在,每 15 分钟调用一次刷新路由,并再次生成一个新的 refresh_Token 和 accessToken。新的 refresh_Token 通过替换前一个来存储在 redis 数据库中。但是,旧的已经不在redis中了。我想知道它在哪里。