Node.js 确保请求来自docker compose中网络中的另一个容器

Node.js 确保请求来自docker compose中网络中的另一个容器,node.js,docker,docker-compose,microservices,Node.js,Docker,Docker Compose,Microservices,有时候简单的任务似乎更复杂。这就是我现在面临的问题 我正在开发一个电子商务API。该应用程序具有基于微服务的体系结构。因此,订单,产品,付款和Auth这些都是不同的微服务。每个都有自己的数据库 这些微服务通过httprestfulapi相互通信。因此,如果用户下了订单,它会与payment microservice进行对话,以获得生成的校验和,从而进行付款。支付微服务与订单对话下单 Order microservice下订单并将详细信息返回给payment。没问题 但下订单后,产品数量必须减少。

有时候简单的任务似乎更复杂。这就是我现在面临的问题

我正在开发一个电子商务API。该应用程序具有基于微服务的体系结构。因此,
订单
产品
付款
Auth
这些都是不同的微服务。每个都有自己的数据库

这些微服务通过
httprestfulapi
相互通信。因此,如果用户下了订单,它会与payment microservice进行对话,以获得生成的校验和,从而进行付款。支付微服务与
订单
对话下单

Order microservice下订单并将详细信息返回给payment。没问题

但下订单后,产品数量必须减少。我没有任何API来减少产品数量。我不想要一个

因为,一个产品只能由其供应商修改。供应商确实可以更改其产品,但为此他通过了他的
jwt

如果我制作一个API来改变产品数量,任何人都可以点击API来减少数量

因此,一种解决方案可以是只能由微服务访问的API

我怎么知道电话是从微服务打来的

我是否应该创建一些
散列
,并在与其他微服务交互时传递它

Docker-compose.yml


    version: '3'
services:
  users:
    build: './users'
    ports:
      - '4001:3000'
    volumes:
      - './users:/src/'
  products:
    build: './products'
    ports:
      - '4002:3000'
    volumes:
      - './products:/src/'
  orders:
    build: './orders'
    ports:
      - '4003:3000'
    volumes:
      - './orders:/src/'
  payments:
    build: './payments'
    ports: 
      - '4004:3000'
    volumes: 
      - './payments:/src/'

Dockerfile

#User node js official image as a parent image
FROM node

ADD package.json /tmp/package.json

RUN cd /tmp && npm install

RUN mkdir -p /src && cp -a /tmp/node_modules /src/

COPY . /src

WORKDIR /src

RUN npm install

EXPOSE 3000

CMD npm start

我将从更广阔的角度来看待这个问题

可以使用RBAC(基于角色的访问控制)解决您试图执行的操作,任何具有不同用户类别和访问权限的应用程序都需要RBAC。根据描述,在您的案例中有三类用户

  • 买主
  • 供应商
  • 管理员
  • 每个类别的用户都有一组不同的访问权限,至少对管理员具有所有访问权限

    一般的想法是,当用户进行身份验证时,它会根据他所属的组获得一个令牌。令牌包含访问权限。令牌将传递给所有后续api端点。令牌定义用户能够做什么。因此,在您的情况下,如果产品服务具有减少数量的端点,则只有管理员或供应商才有权这样做。您可以使用基于OAuth的授权框架

    参考资料


    谢谢,但我已经有了,这就是我提到jwt的原因。它包含角色并定义其访问权限。然后您可以创建服务帐户类型并将其用于微服务微服务通信。