Javascript 如何存储刷新令牌?

Javascript 如何存储刷新令牌?,javascript,node.js,jwt,access-token,refresh-token,Javascript,Node.js,Jwt,Access Token,Refresh Token,我正在研究一段时间有关存储刷新令牌,但我不满意我发现的信息。我想知道您如何存储刷新令牌 有些人习惯将它们存储在数据库中,或者像Redis这样的缓存中,但我认为由于JWT的性质,它应该是无状态的。但我找不到任何其他解决方案,我不想将其存储在设备存储上,因为这可能会导致严重的安全泄漏。你能分享一下你的想法吗 感谢您的回答我想这取决于您试图完成的任务或令牌的创建方式。我发现数据库是存储刷新令牌的好地方。为什么?因为令牌更像一个密码,当存储在数据库中时,它更容易保持与用户的关系。此外,用户使用的是什么设

我正在研究一段时间有关存储刷新令牌,但我不满意我发现的信息。我想知道您如何存储刷新令牌

有些人习惯将它们存储在数据库中,或者像Redis这样的缓存中,但我认为由于JWT的性质,它应该是无状态的。但我找不到任何其他解决方案,我不想将其存储在设备存储上,因为这可能会导致严重的安全泄漏。你能分享一下你的想法吗


感谢您的回答

我想这取决于您试图完成的任务或令牌的创建方式。我发现
数据库
是存储
刷新令牌
的好地方。为什么?因为令牌更像一个密码,当存储在数据库中时,它更容易保持与用户的关系。此外,用户使用的是什么设备并不重要,您始终可以从数据库访问令牌。对于其他方法,当缓存或cookie被清除时,您可以轻松地释放令牌。如果将它们存储到设备,用户可以切换设备。但是,您可以将从刷新令牌创建的
过期令牌
存储到设备/localstorage、cookie或其他地方。创建新的过期令牌时,只需点击数据库获取刷新令牌。

谢谢您的回答,我认为如果您使用数据库,就不需要访问-刷新令牌机制,因为您可以控制其他层。我的意思是,您可以检查数据库中的令牌是否存在并且有效,也可以从数据库中删除令牌,因为我们依赖于数据库,所以您正在使令牌无效。保持数据库中的刷新令牌与此想法几乎相同。但性能更高一些,因为您只是在访问令牌过期时发出请求。然而,我感到困惑,因为jwt意味着无状态。我想你的意思是像一个为用户创建的静态令牌。我总是将它们存储在
localstorage
中<代码>刷新令牌是另一回事。不,实际上我不是说访问令牌,取决于你的回答,我想举个例子来简化事情,但我想我做的有点复杂。然而,据我所知,JWT是为无状态而设计的,在我看来,将其保存到db或缓存似乎有点错误。我实际上是想找到一个解决办法。有些人使用httponly和secure标志将刷新令牌保存在Cookie上,该标志受XSS攻击的保护。我试着去理解这些方法