10

我计划开发一个微服务电子商务系统作为概念证明。该架构由 3 个组件组成:

  • 一个基于 javascript 的单页应用程序,它将 AJAX 请求发送到

  • 带有 REST API 的服务器(API 网关),它提供通过调用其他服务接收的 JSON 数据

  • 3 种服务:CatalogProvider、CustomersProvider、CheckoutProvider

目前,这些服务都是 Magento Shopsystem 的 API 端点。

当我尝试通过向 REST Api 发送请求来将用户登录到他们的 Magento 系统时,显然服务器在发送下一个请求时不记得会话。

我还使用 Magento 在服务器端处理购物车,并通过 REST Api 调用添加/更新/删除项目。在这里,由于会话丢失,发送下一个请求时添加的项目也会丢失。

所以我的问题是:

解决微服务架构中会话处理问题的可能方法是什么?

4

4 回答 4

3

我建议您查看基于令牌的身份验证。

此外,您也可能对 JSON Web 令牌感兴趣。

于 2015-02-24T21:33:08.757 回答
0

您可以将用户状态维护到表中。

当用户登录时创建一个唯一的 id 并将其存储到具有当前时间戳和客户端 IP 的表中,在客户端创建键值对并将其存储到 cookie 中。将其用作会话。

您现在有很多事情要检查用户的存在。

于 2015-03-02T12:21:25.063 回答
0

如果您使用的是 schgoni(magento 的所有者)的项目 jvoid,它会创建会话 ID 并将其存储在 mysql 中,并且它已经内置了 spring 安全模块

对于微服务身份验证,我认为基于 oauth2 的安全架构会更好。在休息调用时使用 oauth 令牌将解决身份验证问题

于 2015-08-28T10:45:09.813 回答
0

再创建一个微服务—— SessionProvider 怎么样?该服务将负责创建和保存会话状态和变量,每个会话将由唯一的会话 id 标识,其他服务可以通过此 id 与 SessionProvider 进行交互。

于 2015-09-18T10:02:59.550 回答