如何制作一次性 JWT

How to make a Single Use JWT

我目前正在为我的项目制作一个 "forgot password" 功能。我将 JWT 附加到重置密码 link 的末尾,该密码将在 10 分钟后过期。但我也希望 link 只使用一次(在他们重置密码后)。起初我想我会在他们更新密码后更新令牌过期时间(愚蠢)但是一旦我这样做了,我意识到令牌不会更新他们的 url 或他们电子邮件中的 url !所以我只是想知道是否有人知道创建一次性 JWT 的方法。希望我提供了有关我正在寻找的内容的足够信息。如果没有,请随时让我解释一下。提前致谢!

您可以将用户上次更改密码的 date/time 与他们的记录一起存储在数据库中。如果最后一次密码更改 time/date 大于创建令牌的时间 return,则函数为 false。当然你必须添加一些逻辑,但它不应该是困难的或广泛的。有更好的方法可以做到这一点,包括刷新令牌等,但考虑到问题,这似乎是一个简单的解决方法。