kuaifan 9a3d9d3b9c feat(license): 多授权选择登录 + 离线 license SN/MAC 绑定校验加固
- 在线授权登录时账号名下有多条可用授权则弹窗选择,选定后复用验证码确认签发(login/confirm)
- 新增 Doo::licenseDecode / licenseBindingError;保存离线 license 与创建用户前校验付费档 SN/MAC 与本机匹配
- 诊断展示与校验门槛纳入不限人数(people==0)档
2026-07-02 13:29:51 +00:00

109 lines
6.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
id: license.online.howto
title: 在线授权(邮箱验证码登录 / 申请试用 / 自动续期)
type: howto
feature: license
scope: super-admin
locale: zh
aliases:
- 在线授权
- 邮箱授权
- 邮箱验证码授权
- 用 appstore 账号授权
- 申请试用
- 试用授权
- 在线 License
- 自动续期
- 授权邮箱登录
- 在线授权到期
- 在线授权冻结
- 在线授权被吊销
- 换机 deactivate
- 选择要使用的授权
- 一个账号多条授权
- 登录时选择授权
- SN 与 License 不匹配
- MAC 与 License 不匹配
- 终端SN与License不匹配
- 终端MAC与License不匹配
- 换机后在线授权失效
related_tools: []
related_pages: []
prerequisites:
- 需要进入「系统设置」→「License」页面仅管理员可见切到「在线授权」Tab
- 需要一个在 App Store 注册的邮箱账号,登录后可在 App Store 门户「我的授权」查看
- 终端需能联网访问 App Store 授权中心
negative:
- 在线授权与离线授权互斥:同一时刻只有一张生效 License切到在线并登录后会接管 License 文件
- 离线授权(粘贴 License 原文)完全不受影响,没有自动续期
- 一个账号同一时刻只占用一个实例座位,换机需先在原实例「退出在线授权」释放
- 试用每个账号仅一次,时长由 App Store 管理员配置且硬上限 60 天
last_verified: v1.8.45
---
# 在线授权(邮箱验证码登录 / 申请试用 / 自动续期)
DooTask 的 License 页提供两种授权方式,可在页面顶部 Tab 切换:
- **离线授权**:手动粘贴 License 原文(见 [[license.howto]]),无自动续期。
- **在线授权**:用 App Store 注册邮箱 + 邮箱验证码登录自助签发,终端自动定时续期(类似 JetBrains 账号激活)。
## 入口
桌面端:左上角头像 →「系统设置」→「License」→ 顶部「在线授权」Tab仅管理员可见
## 怎么用
登录授权与申请试用共用同一套「邮箱 + 验证码」输入,先发码再选择动作:
1. 在「在线授权」Tab 输入 App Store 注册邮箱
2. 点击「发送验证码」→ 系统向该邮箱发码(按钮进入 60 秒倒计时,发码成功后提示验证码已发送至脱敏邮箱)
3. 填入收到的验证码
### 已有授权 → 登录授权
- 填好邮箱与验证码后点击「登录授权」
- 终端把自身指纹doo_sn、网卡 MAC、版本上报授权中心签发一张租约 License 并落地
- 成功后页面显示账号、套餐、使用人数、授权有效期、SN/MAC与本机是否匹配、当前状态
#### 账号名下有多条可用授权时
- 若该账号名下有**两条及以上**本机可用的授权(座位空闲、或本机已在用的),登录时会弹出「选择要使用的授权」窗口,逐条列出套餐、使用人数、授权有效期,本机已在用的会标注「当前设备使用中」
- 选中一条后点击「确定授权」即对该条签发(复用刚才的验证码,无需重新发码)
- 只有一条可用时不弹窗,直接签发;没有可用授权则提示申请试用或购买;名下授权都被其它实例占用时提示需先在原实例释放(换机)
### 没有正式授权 → 申请试用
- 填好邮箱与验证码后点击「申请试用」即开通试用授权并签发
- 试用默认 14 天 / 不限人数(具体以 App Store 管理员配置为准,时长硬上限 60 天),每个账号仅能申请一次
### 日常维护
- **自动续期**:终端每小时检查,租约将尽时自动向授权中心续期,无需人工干预(需保持联网);进入授权页时也会静默刷新一次
- **换机 / 退出**:「退出在线授权」会释放该账号在授权中心占用的座位,并把终端回落到基础版;换机时先在原实例退出,再到新实例登录
## 状态与提醒(断网/欠费时的分级降级)
在线授权按租约 + 本地宽限分四级提醒会显示在「License」页与仪表盘顶部横幅仅管理员可见
| 状态 | 含义 | 影响 |
| --- | --- | --- |
| 生效中 | 续期正常 | 无 |
| 即将到期 | 续期失败或租约临近 | 仅提醒 |
| 已过期 | 租约已到期 | 限制新增用户(沿用离线过期的既有行为) |
| 已吊销 | 过期超过宽限期或授权被收回 | 回落基础版(最多 3 人,超出的账号按既有规则禁用) |
只要在租约窗口内恢复联网并成功续期一次,即可回到「生效中」。
## SN / MAC 与本机匹配
在线授权签发的 License 内嵌了签发时的终端 SN 与网卡 MAC。正常情况下二者与本机一致「在线授权」Tab 保持极简,只显示账号、套餐、使用人数、有效期与状态(带颜色圆点),不常驻展示 SN/MAC 这类技术细节。
一旦 SN 或 MAC 与本机不匹配,页面顶部会浮出告警卡,并展开「诊断详情」逐项列出「授权 SN / 当前 SN / 授权 MAC / 当前 MAC」及匹配标记✓/✕同一批告警也会出现在仪表盘顶部横幅。「离线授权」Tab手动粘贴场景则始终以列表展示 SN/MAC用行尾标签直陈匹配与否、不匹配时整行标红IP/域名/创建时间等低频字段收纳在「更多信息」里。
授权成功后若终端的 SN 或 MAC 发生变化,行为不同:
- **MAC 变化SN 不变)**:属于同一实例,下一次自动续期会用新的 MAC 重新签发 License 自动恢复,通常无感;重签前的短暂窗口可能出现 MAC 不匹配告警。
- **SN 变化**:视为换机。续期会被授权中心判为座位被占用而拒绝重签,原 License 因 SN 对不上而失效,终端将按状态机走向「已过期 → 已吊销」并回落基础版。需在原实例(或让管理员在 App Store 授权中心)释放座位后,在新实例重新登录授权。
## 怎么自检
- 接口 `POST api/license/status` 返回当前在线授权状态mode/plan/people/lease_expired_at/status
- 提醒文案同样并入 `POST api/system/license``error` 数组,便于脚本巡检
## 不支持
- 普通管理员能看授权信息但不能登录/签发只有超级管理员id=1能操作
- 在线授权依赖联网;完全离线/内网隔离部署请用离线授权(粘贴原文)
- 在 App Store 内购买 License 为后续能力,当前在线授权面向已售出/试用账号