/** * 租户标识读写。 * * 背景:库隔离(Database-per-Tenant)方案下,账号只存在于各租户库中, * 服务端必须在认证之前就知道该连哪个库,所以登录请求要带 X-Tenant-ID。 * token 签发之后租户已写入 claim,后续请求由服务端以 claim 为准,本模块不再参与。 * * 存储键全平台统一(见 setting.js 的 TENANT_STORE_NAME): * 主应用与各 qiankun 子应用共用同一个 key,避免"主应用存 A、子应用读 B"。 */ import { TENANT_STORE_NAME } from '@/config/setting'; /** * 读取当前租户标识。 * @returns {string} 租户 ID 字符串;未选择时返回空串 */ export function getTenantId() { const value = localStorage.getItem(TENANT_STORE_NAME); return value === null || value === undefined ? '' : value; } /** * 写入当前租户标识。 * @param {string|number} tenantId 租户 ID;空值表示未选择,此时直接清理该键 */ export function setTenantId(tenantId) { if (tenantId === null || tenantId === undefined) { removeTenantId(); return; } const text = String(tenantId).trim(); if (text === '') { removeTenantId(); return; } localStorage.setItem(TENANT_STORE_NAME, text); } /** 清理当前租户标识(退出登录时调用) */ export function removeTenantId() { localStorage.removeItem(TENANT_STORE_NAME); }