我可以广泛使用JWT作为存储会话数据的主要媒体以防止冗余数据库查询



对该主题的简单搜索返回了许多文章/博客库和论坛讨论JWT用作会话存储媒体的注意事项。

,但我仍然将JWTS视为一个很棒的会话存储媒体。因为创建JWT不是IO操作,而是查询数据库(甚至是最轻巧的内存(是网络/磁盘IO操作。因此,在缩放缩放时,没有IO而不是拥有它会带来很大的不同。

这是我的观点。从很多年前开始,我们就管理了服务器端会话存储的问题,发现它没有扩展,因此我们发现无状态的API不需要在服务器上存储会话数据并开始使用它们。然后,我们发现我们有问题呼叫数据库以检查每个API调用中的用户真实性,并发现将数据提供给用户并签署以防止欺诈性索赔。

但是为什么只是用户身份验证?为什么没有其他一切!就像用户携带某些实体跨API的ID时一样,我们可以使用客户端的JWT传输主要对象,而不是ID和冗余查询。

我知道我们给用户提供的数据无效的问题,但是它具有自己的解决方案,例如使用过期时间,重新黑名单等...

我也知道,通过这样做,我们将BW使用从服务器内部(后端和DB之间(移动到Internet(用户和服务器之间(,但是在大多数情况下,我发现它更具成本效益。我错了吗?

tldr;

无状态的API迫使我们进行冗余查询,而不仅仅是用于用户数据。除了身份验证和用户数据外,为什么我们不应该使用JWT存储许多其他东西来防止这种冗余?

什么是"其他所有"?它会多久改变一次?请注意,每次更改后,您都必须创建一个新的已签名JWT,将其传递给客户端,让它忘记以前使用过的旧JWT,而是使用新的JWT。那将是"会话数据"。对于JWT。

最新更新