更新时间:2025-08-08 GMT+08:00
分享

用户自定义租户id获取接口

多租模型的配置主要分为两种:

  • 验证方式为Token
  • 验证方式为Header

下面分别介绍这两种方式的使用方法。

租户验证方式为Token

  1. 登录AstroPro控制台,单击“进入首页”,进入AstroPro实例。
  2. 在左侧导航栏中,选择后端开发平台 > 服务管理 > 服务
  3. 在服务列表中,单击待操作服务后的“编辑”
  4. 单击顶部流程导航栏的“生成策略”,进入生成策略页面。

    设置租户配置:

    • “多租模型”选择“TENANT”
    • “租户验证方式”选择“Token”
      图1 开启多租模型

  5. 单击顶部流程导航栏的“业务设计”,进入业务设计页面。

    选中需要进行资源隔离的对象,在属性面板中勾选“支持BO多租”,如图2所示:
    图2 设置BO多租

  6. 设置完成后,单击“下一步”
  7. 输入变更日志描述信息,单击“创建”

    系统开始创建服务,最终生成的服务结构如图3所示。

    图3 生成服务

    此方式下生成的代码会在utils目录中生成TenantIdFilter和TenantIdWebMvcHandler两个类。

    • TenantIdFilter:用于将租户信息设置到线程变量中的过滤器。
    • TenantIdWebMvcHandler: 提供给用户实现的SPI,用来获取租户信息。具体内容如下:
      public interface TenantIdWebMvcHandler {
          String getTenantId(HttpServletRequest request);
      }

  8. 手动实现TenantIdWebMvcHandler接口,覆写getTenantId方法来获取租户信息。

    示例:
    public class CustomTenantIdHandler implements TenantIdWebMvcHandler {
    
        /**
         * 示例只是简单获取租户信息,用户需要根据自己的需要去实现该方法
         * 
         * @param request
         * @return
         */
        @Override
        public String getTenantId(HttpServletRequest request) {
            return (String) request.getAttribute("tenantId");
        }
    }

  9. 配置SPI(在resource/META-INF/services目录中新建文件,文件名为TenantIdWebMvcHandler全路径限定名,文件中内容为TenantIdWebMvcHandler接口实现类的全路径限定名)。

    图4 配置SPI

  10. 在业务代码中添加tenant_id的校验逻辑(生成代码时会自动生成相关校验逻辑)。

    完成上述步骤后,项目即可启动,此时资源将实现租户隔离。

租户验证方式为Header

  1. 登录AstroPro控制台,单击“进入首页”,进入AstroPro实例。
  2. 在左侧导航栏中,选择后端开发平台 > 服务管理 > 服务
  3. 在服务列表中,单击待操作服务后的“编辑”
  4. 单击顶部流程导航栏的“生成策略”,进入生成策略页面。

    设置租户配置:

    • “多租模型”选择“TENANT”
    • “租户验证方式”选择“Header”
      图5 开启多租模型

  5. 单击顶部流程导航栏的“业务设计”,进入业务设计页面。

    选中需要进行资源隔离的对象,在属性面板中勾选“支持BO多租”,如图6所示:
    图6 设置BO多租

  6. 设置完成后,单击“下一步”
  7. 输入变更日志描述信息,单击“创建”

    系统开始创建服务,最终生成的服务结构如图7所示。

    图7 生成服务

    此方式下生成的代码会在utils目录中生成TenantIdFilter和TenantIdWebMvcHandler两个类。

    获取用户租户信息的方式是从请求头中查找key为tenant_id的请求头(需要在请求接口的时候带上此请求头)。用户无需去实现TenantIdWebMvcHandler类。

  8. 在业务代码中添加tenant_id的校验逻辑(生成代码时会自动生成相关校验逻辑)。

    完成上述步骤后,项目即可启动,此时资源将实现租户隔离。

相关文档