跳到正文
返回 Launch 文档

下载 MarkdownGitHub 原始文档

Launch SDK 账号退出重试修复

日期:2026-10-24。已修复 AUTH-07,并同步 Go、JavaScript、Python、C#、Java、Ruby、Rust、C、C++ 的账号生命周期入口。未部署、未发布 SDK、未提交或推送 Git。 本任务没有修改 Launch 或 Licentivo 服务端业务代码。

行为

显式退出先将安全存储中的账号记录标记为“仅待撤销”,再调用官方 SDK 退出并向 Launch 提交账号会话撤销。无论网络或取消状态如何,本地运行时都会停止,不允许继续执行受保护功能。

Launch 未确认撤销时,SDK 保留待办及重试所需的原账号凭据,不再把它当作已登录账号。再次 Logout、Login 或 Restore 会恢复撤销请求;Restore 不会拿待办请求身份或启动授权运行时。收到成功响应,或收到表明原会话已不能认证的 HTTP 401 后,才删除账号待办。因此响应丢失也能恢复,不会出现“第二次退出返回成功,但从未补交撤销”的情况。

正常已登录记录仍兼容 v2。待撤销记录使用私有 v3 格式;Java、Rust 还移除了正常登录所需的凭据字段形状,避免旧版 SDK 将待办误当成正常登录。待办不保存短期身份断言、许可证密钥或签名许可。

账号待办使用原来配置的安全 Store。跨进程恢复需要持久化安全存储,例如 Windows DPAPI 或 SDK 支持的加密存储;默认 MemoryStore 只在本进程保留数据。重试由后续登录、恢复或退出操作触发,没有新增独立后台任务。存储或撤销未完成会返回错误或待完成结果,不提示成功。

Licentivo SDK 的设备退出票据和 .logout.json 仍由它管理,Launch 不删除其缓存目录,不判断设备、功能或离线权限。同步更新了原生示例和各语言 SDK 文档。

验证

范围 结果
Launch Go 源码包 185 条测试通过记录,含子用例;无失败;go vet 通过
真实 Launch HTTP 与 MySQL 退出请求中断后,安全待办保留;重建 SDK 后无法恢复登录;网络恢复后补交撤销,旧 token 的认证和身份接口均返回拒绝
JavaScript 10 项通过,含退出失败、重建恢复、401 确认
Python 8 项通过,含退出后本地账号清理、重建恢复和 Windows DPAPI
C# 生命周期、待办恢复、SDK 退出日志保留及 DPAPI 检查通过
Java 7 组生命周期与安全测试通过,含离线退出重试
Ruby 账号生命周期、待办恢复和加密存储回归通过
Rust 全部本地测试通过,含待办重建恢复和实际 SDK 运行
C / C++ 实际签名 SDK、断网重建恢复、401 确认、DPAPI 和 C++ 运行入口通过
Licentivo 当前授权修复 45 条测试通过记录,无失败、无跳过;包含策略漂移下负向通知、低配设备协调、人工设备上限及现有授权回归
嵌入的官方 SDK 清单中 115 个文件哈希全部匹配,未修改其授权或加密实现

Launch 源码回归中,TestMySQLBaseline、TestProductUploadRoundTrip、TestInitialAdministratorMustChangePasswordBeforeAdministration、TestNewPaymentProvidersAndRegistrationWithoutMail 四项依赖其他专用库的测试跳过,未计作通过;本次 SDK、账号 HTTP、购买同步和映射流程使用独立测试库完成验证。

两端联调

使用本机独立 MySQL 8.0.32、当前 Launch、Licentivo 服务及其工作进程、实际 Go Launch SDK 与官方授权运行时、DPAPI 账号存储,完成 15 个业务阶段。

新增两种退出故障验证:

  1. 请求未送达 Launch:账号退出接口暂时返回 503。SDK 停止本地功能,真实 Licentivo 设备绑定释放,账号撤销待办保留。重建 SDK 后仍只重试退出;恢复连接后,原 Launch 会话被撤销,Licentivo 确认收到对应会话通知。
  2. 服务端已撤销,但回包丢失:Launch 已处理退出,测试代理将响应替换为 503。待办跨 SDK 重建保留;恢复连接后,通过 HTTP 401 确认原会话失效并删除待办。过程中没有恢复登录或重新激活设备。

其余阶段覆盖实际购买同步与签名功能运行、普通关闭恢复、正常退出、远程解绑及旧代次、续费退款、账号撤销与重新登录、全额退款拒绝运行、退款恢复、拒付和大文档翻译回归。Licentivo 三项更新由其负责方提供,本任务只构建和验证。

支付渠道和 DeepL 使用隔离模拟服务,没有真实扣款、退款或付费翻译。真实联合服务验证使用 Go;其他语言完成本地 SDK 回归,不声称九种语言分别完成了一套真实服务部署验收。

本轮未访问 192.168.2.177。MySQL 与 Licentivo 临时进程均已停止,原有服务及测试证据保留。原始材料在 .local/logout-retry-fix-20261024/,摘要与源码哈希见 验证证据。