【问题标题】:Sessions in a Microservice architecture for an E-Commerce system电子商务系统的微服务架构中的会话
【发布时间】:2015-04-20 20:35:48
【问题描述】:

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

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

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

  • 3 种服务:CatalogProvider、CustomersProvider、CheckoutProvider

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

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

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

所以我的问题是:

有哪些方法可以解决微服务架构中的会话处理问题?

【问题讨论】:

  • 您好,您找到解决问题的好方法了吗?是否可以与他人分享?如果我开始新的赏金任务,你有时间测试/实施最终的答案吗?这个问题本身让我很感兴趣,但我目前没有案例或时间来测试它:) 谢谢
  • 不直接与 php 相关,但... presos.dsyer.com/decks/microservice-security.html

标签: php magento soa single-page-application microservices


【解决方案1】:

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

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

【讨论】:

  • 感谢您的建议。您是否知道任何有用且好的资源可以阅读这些概念?
【解决方案2】:

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

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

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

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 2020-12-16
        • 2017-05-16
        • 2019-07-03
        • 2020-07-16
        • 1970-01-01
        • 1970-01-01
        • 2011-06-21
        • 2021-11-02
        • 2018-03-01
        相关资源
        最近更新 更多