@ 低调/ 租户
带有子域、路径和页眉租户分辨率的多租户中间软件
部分 基础 生态系统——一个基于信号的网络运行时间超过本土的HTML.
安装
npm install @basenative/tenant
快速启动
import {
createSubdomainResolver,
tenantMiddleware,
requireTenant,
tenantScope,
} from '@basenative/tenant';
import { createPipeline } from '@basenative/middleware';
const pipeline = createPipeline()
.use(tenantMiddleware(createSubdomainResolver({ baseDomain: 'example.com' })))
.use(requireTenant())
.use(async (ctx, next) => {
// ctx.state.tenantId is now set
console.log('Tenant:', ctx.state.tenantId);
await next();
});
解析器
// Subdomain: acme.example.com -> "acme"
createSubdomainResolver({ baseDomain: 'example.com' });
// Path prefix: /t/acme/dashboard -> "acme"
createPathResolver({ prefix: '/t' });
// Request header: X-Tenant-ID: acme
createHeaderResolver({ header: 'x-tenant-id' });
// Try multiple resolvers in order
createCompositeResolver([subdomainResolver, headerResolver]);
API 密码
解析器
createSubdomainResolver(options?)——从子域取出租户. 选项 :baseDomain, (中文(简体) ),exclude(默认 :['www']) (中文(简体) ).createPathResolver(options?)——从URL路径前缀取出租户. 选项 :prefix(默认 :'/t') (中文(简体) ).createHeaderResolver(options?)——从请求头取出租户. 选项 :header。 。 。 .createCompositeResolver(resolvers[])——按顺序对每个解析器进行调整并返回第一个非核结果.
中间软件
tenantMiddleware(resolver)——运行每个请求的解析器并存储结果ctx.state.tenantId。 。 。 .requireTenant(options?)- 在下述情况下拒绝请求:ctx.state.tenantId未设置。 选项 :status(默认:400),message。 。 。 .tenantScope(db, options?)——包装数据库适配器,以自动将租户范围范围输入查询. 选项 :column(默认 :'tenant_id') (中文(简体) ).
许可证
阿帕奇 - 2.0