用户自定义租户id获取接口
多租模型的配置主要分为两种:
- 验证方式为Token
- 验证方式为Header
下面分别介绍这两种方式的使用方法。
租户验证方式为Token
- 登录AstroPro控制台,单击“进入首页”,进入AstroPro实例。
- 在左侧导航栏中,选择 。
- 在服务列表中,单击待操作服务后的“编辑”。
- 单击顶部流程导航栏的“生成策略”,进入生成策略页面。
设置租户配置:
- “多租模型”选择“TENANT”。
- “租户验证方式”选择“Token”。
图1 开启多租模型
- 单击顶部流程导航栏的“业务设计”,进入业务设计页面。
- 设置完成后,单击“下一步”。
- 输入变更日志描述信息,单击“创建”。
系统开始创建服务,最终生成的服务结构如图3所示。
此方式下生成的代码会在utils目录中生成TenantIdFilter和TenantIdWebMvcHandler两个类。
- TenantIdFilter:用于将租户信息设置到线程变量中的过滤器。
- TenantIdWebMvcHandler: 提供给用户实现的SPI,用来获取租户信息。具体内容如下:
public interface TenantIdWebMvcHandler { String getTenantId(HttpServletRequest request); }
- 手动实现TenantIdWebMvcHandler接口,覆写getTenantId方法来获取租户信息。
示例:
public class CustomTenantIdHandler implements TenantIdWebMvcHandler { /** * 示例只是简单获取租户信息,用户需要根据自己的需要去实现该方法 * * @param request * @return */ @Override public String getTenantId(HttpServletRequest request) { return (String) request.getAttribute("tenantId"); } }
- 配置SPI(在resource/META-INF/services目录中新建文件,文件名为TenantIdWebMvcHandler全路径限定名,文件中内容为TenantIdWebMvcHandler接口实现类的全路径限定名)。
图4 配置SPI
- 在业务代码中添加tenant_id的校验逻辑(生成代码时会自动生成相关校验逻辑)。
完成上述步骤后,项目即可启动,此时资源将实现租户隔离。
租户验证方式为Header
- 登录AstroPro控制台,单击“进入首页”,进入AstroPro实例。
- 在左侧导航栏中,选择 。
- 在服务列表中,单击待操作服务后的“编辑”。
- 单击顶部流程导航栏的“生成策略”,进入生成策略页面。
设置租户配置:
- “多租模型”选择“TENANT”。
- “租户验证方式”选择“Header”。
图5 开启多租模型
- 单击顶部流程导航栏的“业务设计”,进入业务设计页面。
- 设置完成后,单击“下一步”。
- 输入变更日志描述信息,单击“创建”。
系统开始创建服务,最终生成的服务结构如图7所示。
此方式下生成的代码会在utils目录中生成TenantIdFilter和TenantIdWebMvcHandler两个类。
获取用户租户信息的方式是从请求头中查找key为tenant_id的请求头(需要在请求接口的时候带上此请求头)。用户无需去实现TenantIdWebMvcHandler类。
- 在业务代码中添加tenant_id的校验逻辑(生成代码时会自动生成相关校验逻辑)。
完成上述步骤后,项目即可启动,此时资源将实现租户隔离。