繁体   English   中英

用于微服务的 HttpSession

[英]HttpSession for microservices

我知道基于令牌的身份验证广泛用于微服务,尤其是在水平扩展时。

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

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

这对于微服务来说不是一个很好的 session 管理吗? 微服务总是必须是无状态的吗?

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

如果您特别参考 javax.servlet.http.HttpSession object 的实现,这通常是一个服务器(服务)本地的,如果可能的话,它需要一些自定义代码来根据 Z21D6F40CFB511982E4424E0 提供的 Z21D6F40CFB511982E4424E0 重新加载它,您的特定运行时(不知道您使用的是什么软件)。

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

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

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

您也可以查看此问题的答案

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM