首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >微服务HttpSession

微服务HttpSession
EN

Stack Overflow用户
提问于 2021-11-22 12:02:44
回答 1查看 135关注 0票数 0

我理解基于令牌的身份验证被广泛应用于微服务,尤其是当存在水平扩展时。

对于微服务,我们可以通过将会话存储在数据库中来使用它吗?这一系列请求将是:

  • 首先,创建HTTPsession并将会话id与唯一的用户名一起存储在数据库表中。
  • 第二个请求与此会话id一起发送,任何微服务实例都可以为该请求提供服务。服务器必须使用数据库记录来验证此会话和用户。如果数据库中存在sesssionid+username组合体,而会话is是有效的,则将请求重定向到登录页面。
  • 当单击注销时,会话将失效,db记录也将被删除。

对于微服务来说,这不是一个很好的会话管理吗?微服务总是无状态的吗?

EN

回答 1

Stack Overflow用户

发布于 2022-01-07 11:54:22

基于令牌的身份验证用于微服务的原因是为了避免在服务之间共享会话状态。

如果您具体引用了javax.servlet.http.HttpSession对象的实现,这通常是一个服务器(服务)的本地实现,并且需要一些自定义代码来根据所提供的会话id重新加载它,如果可能的话,在您特定的运行时(不知道您正在使用的是什么软件)。

我不明白为什么你的建议是不可能的,但我会仔细考虑这是否是一个绝对的要求。也许还有其他更简单的方法来实现你想要的。

一种方法是在登录时发出一个令牌(想到了JWT),让其他服务简单地验证这个令牌并从中提取用户数据。这样,第一次登录后的身份验证不需要查找用户数据。

如果共享状态是您所需要的,我建议您找到一些现有的软件来处理会话存储。例如,我看到Redis有一个会话管理的解决方案。

此外,您还可以查看这个问题的答案

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70065441

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档