您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

我应该将JWT令牌存储在Redis中吗?

我应该将JWT令牌存储在Redis中吗?

TLDR:如果您想在某个时候撤销令牌,可以,将其存储在像Redis这样的快速存储器中。

使用JWT的有据可查的缺点之一是,没有简单的方法可以撤销令牌,例如,如果用户需要注销或令牌已被盗用。撤消令牌意味着要在某个存储中查找令牌,然后决定下一步要做什么。由于JWT的要点之一是避免往返于db,因此一个很好的折衷方案是将其存储在比rdbms少的负担下。对于Redis而言,这是一项完美的工作。

正如评论中所建议的那样,一种好的方法是使该列表成为黑名单(即,无效令牌的列表)。根据每个请求,您将查找列表,以确保其中没有令牌。通过使用概率算法存储令牌,可以在查找步骤中进一步改善内存空间和性能一个简单的实现是不将整个令牌存储在redis黑名单中。只需存储令牌的前几个字符。然后,您可以使用更持久的解决方案(文件系统,rdbms等)存储黑名单的完整版本。这是一个乐观的查询,仍然可以快速告诉您黑名单中不存在令牌(这是更常见的情况)。如果要查找的令牌恰巧与redis黑名单中的一项匹配(因为其前几个字符匹配),然后转到持久性存储上的额外查找。另一个更有效且相对容易实现的算法称为布隆过滤器。

其他 2022/1/1 18:24:34 有423人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶