| 123456789101112131415161718192021222324252627282930313233343536373839404142 |
- /**
- * 租户标识读写。
- *
- * 背景:库隔离(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);
- }
|