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