我理解基于令牌的身份验证被广泛应用于微服务,尤其是当存在水平扩展时。
对于微服务,我们可以通过将会话存储在数据库中来使用它吗?这一系列请求将是:
对于微服务来说,这不是一个很好的会话管理吗?微服务总是无状态的吗?
发布于 2022-01-07 11:54:22
基于令牌的身份验证用于微服务的原因是为了避免在服务之间共享会话状态。
如果您具体引用了javax.servlet.http.HttpSession对象的实现,这通常是一个服务器(服务)的本地实现,并且需要一些自定义代码来根据所提供的会话id重新加载它,如果可能的话,在您特定的运行时(不知道您正在使用的是什么软件)。
我不明白为什么你的建议是不可能的,但我会仔细考虑这是否是一个绝对的要求。也许还有其他更简单的方法来实现你想要的。
一种方法是在登录时发出一个令牌(想到了JWT),让其他服务简单地验证这个令牌并从中提取用户数据。这样,第一次登录后的身份验证不需要查找用户数据。
如果共享状态是您所需要的,我建议您找到一些现有的软件来处理会话存储。例如,我看到Redis有一个会话管理的解决方案。
此外,您还可以查看这个问题的答案
https://stackoverflow.com/questions/70065441
复制相似问题