额度、套餐 id、有效期由 config.php 硬编码锁定,运营只能填租户 ID —— 避免拉新入口被改成"白送"。
免费通道下套餐 / 额度 / 有效期由服务端强制覆盖为 {{ freeTerms.planId }} · {{ freeTerms.envLimit }} 环境 · {{ freeTerms.days }} 天, 下方对应控件已锁定。
| id | 名称 | 环境上限 |
|---|---|---|
| {{ id }} | {{ info.name }} | {{ info.environmentLimit === null ? '∞' : info.environmentLimit }} |
| 租户 ID | 唯一 jti | 套餐 / 额度 | 到期时间 | 状态 | 操作 |
|---|---|---|---|---|---|
| 加载中… | |||||
| 没有符合条件的记录 | |||||
|
{{ row.tenant_id }}
{{ fmtDate(row.iat) }} · {{ row.kid }}
|
{{ row.jti }}
|
{{ row.planName }}
{{ row.plan }} · {{ row.env_limit }} 环境
|
{{ fmtDate(row.exp) }}
{{ fmtRelative(row.exp) }}
|
{{ row.revoked ? '🔴 已吊销' : (row.expired ? '⏳ 已过期' : '🟢 正常') }}
{{ row.revokeReason }} · {{ fmtDate(row.revokedAt) }}
|
已吊销
|
提示:列表默认**不返回**完整激活码(凭据会被浏览器缓存与代理日志留存),点「复制」时才单次索取。 吊销后客户端最长需一个 CRL 周期(当前 {{ stats ? Math.round(stats.crl.ttlSeconds / 3600) : 24 }} 小时)才会生效。
当前主键与内置锚点不一致时,签出的凭证在现役客户端上会被 LICENSE_UNKNOWN_KID 拒收。 正解是先用 npm run keys:embed 把新公钥编译进客户端, 再切换主键 —— **不要**在客户端放宽校验。