JWT 吊销信息在哪里存储,mongoDB 还是 Redis?

Posted

技术标签:

【中文标题】JWT 吊销信息在哪里存储,mongoDB 还是 Redis?【英文标题】:Where to store JWT revocation information, mongoDB or Redis? 【发布时间】:2017-10-21 08:48:03 【问题描述】:

目前使用 JWT 而非会话来实现 MEAN 堆栈用户注册/登录系统,以进行所有身份验证。

为了能够撤销 JWT,我需要将一些 JWT 信息存储为令牌黑名单的一部分。我最初的想法是使用 MongoDB 来存储列入黑名单的令牌,但 Redis 也适合吗?在这种情况下我不愿避免使用 Redis 的原因是,如果服务器崩溃/重新启动,那么令牌黑名单将会丢失,而对于 MongoDB,黑名单将保持不变/持久。

任何建议将不胜感激。谢谢。

【问题讨论】:

【参考方案1】:

Redis 支持多种基于磁盘的持久性模式。您可以使用 save 配置指令启用 snapshop 持久性 (RDB),也可以使用 appendonly yes 配置指令启用变更日志持久性 (AOF)。

对于您的用例,您可能应该使用 AOF 持久性。

更多关于 Redis 持久化的信息可以在https://redis.io/topics/persistence找到。

【讨论】:

谢谢。我不知道 Redis 可以坚持下去。将通读手册。出于兴趣,您是否说使用启用 AOF 的 Redis 而不是简单的 Mongo 解决方案有什么优势?我认为数据访问速度将取决于数据集的大小,因此 Redis 更适合较小的数据集,因为它存在于内存中。

以上是关于JWT 吊销信息在哪里存储,mongoDB 还是 Redis?的主要内容,如果未能解决你的问题,请参考以下文章

NodeJS:在客户端将 JWT 存储在哪里? sessionStorage、localStorage 还是 cookie?

在哪里存储 JWT 令牌?

哪种 oauth 令牌类型更适合基于节点 js 的应用程序。 JWT 还是不透明的?在哪里存储它们中的每一个

在哪里存储 JWT 令牌 Laravel 5.6 应用程序?

使用 JWT 获取用户信息

我需要在哪里使用 JWT?