# 原版登录与卡密对照 核对日期:2026-10-02。依据用户提供的原版 APK 内实际运行的前端代码,未调用原服务商接口。原版的服务端发行规则无法仅凭 APK 完整确定。 ## 核对依据 - 文件:`__UNI__6A214A0__20260930134829.apk.1.1.1`,27,796,722 字节。 - SHA-256:`f1e28bd66ad03c60e90cea6100998e3e584151446de8db91bd6addf24b09fd0b`。 - 代码入口:`assets/apps/__UNI__6A214A0/www/app-service.js`。直接从该 APK 解压后格式化,与此前功能迁移时提取的代码一致。 - 下述行号来自该文件经 Prettier 的 Babel 解析器格式化后的本机分析文件;原文件、格式化文件及供应商凭证不加入仓库或交付包。 ## 原版实际流程 1. 登录表单使用手机号、密码和可选激活码(5044–5049 行)。只有账号密码登录;激活码不能单独作为登录凭证。 2. 未填写激活码时,先向 `/oauth/license/check` 查询账号和设备的授权(3797–3808、5118–5146 行)。若返回 `needLicense`,显示输入框并提示「需要激活码,填写后再次点击登录」,此次不进入工作台。 3. 提交登录时把账号密码、设备标识及填写的激活码一起传到 `/oauth/token`(5147–5172 行)。激活码无效、已使用或到期会留在登录页(5215–5220 行)。 4. 原版激活码形如 `JM-XXXX-XXXX-XXXX`,页面提示首次兑换绑定账号、一码一号(5245–5258、5508–5527 行)。默认可点「有激活码?点此输入」(5545 行)。有效授权期间不要求每次重复填写。 5. 已登录会话启动时仍检查授权,再进入工作台(5066–5093 行);运行期间约每 5 分钟检查一次(4613–4614、4948–4989 行)。明确失效时清除登录;网络错误会重试,累计三次失败后退出。到期续费提示回到登录页输入新激活码(5006 行)。 设备标识会参与检查,但 APK 只展示服务商返回的结果。不能据此断言原版服务端允许跨设备兑换,也不能确定原卡密的发行天数、价格或后台操作规则。 ## 寄当家 2.1.1 的调整 登录页增加可选「卡密激活 / 续费」输入框,以及「有卡密?点击输入」入口。账号密码正确但当前设备没有有效授权时,在本页展开输入框;授权通过后才保存登录会话并进入工作台。输入错误卡密、已停用卡密或已过兑换有效期的卡密时,保留表单供重试,并清除临时会话。 注册账户后需要激活时,表单自动切回登录模式,重试不会再次注册同一账号。有效授权的账户直接用账号密码登录;已保存会话的授权失效时回到登录页。管理员免卡密登录,仍在 APP 内生成与分发卡密。设置中的「账户与授权」保留主动续费入口。 此改动沿用自建服务器 2.1.0 的接口,不要求已部署服务器升级,也不接入原版的寄脉/陆云授权服务。旧版 `JM-` 卡密不能兑换新版授权;新版 `JDJ-` 卡密由本项目管理员发行。现有账号、卡密和授权数据库继续使用。 新版继续采用此前实现的账户和设备绑定、一次兑换、同账户设备重试不重复加天数、有效期内续费累加、管理员撤销及恢复授权的规则。联网检查间隔为 2 分钟,断网可使用最近成功验证后的最多 24 小时且不超过授权到期时间;这与原版的网络重试策略有区别。未从 APK 得到的服务端规则没有冒充原版实现。 ## 验证 `tests/JiDangJia.AuthChecks` 直接编译 APP 的 `AuthClient.cs`,连接独立端口和数据库的真实服务端,仅替换设备存储 API。覆盖首次登录、有效授权免重复卡密、错误密码、旧服务商卡密、停用及过期卡密、兑换绑定、重复兑换、授权撤销及到期、注册重试、存储写入失败重试,以及断网缓存边界。测试不连接公网服务器,不使用真实用户账号或卡密。 2026-10-02 已通过 60 项检查,结果见 `artifacts/verification/login-card-checks.txt`。 Pixel 7 / Android 16 / API 36 上使用独立包名 `com.xfestudio.jidangjia.authtest` 的 Debug 2.1.1 应用连接本机 5188 服务端,完成 9 项界面检查:默认可选卡密入口、注册后转回登录并要求卡密、错误卡密留在登录页、卡密激活进入工作台、冷启动恢复、有效授权免重复卡密登录、普通账户隐藏后台、管理员免卡密登录并显示后台、主动展开卡密输入框。结果见 `artifacts/verification/login-card-android.txt`。本机共享服务器的撤销测试操作被自动审批拒绝(`blocked by policy`),撤销与到期场景仅在独立数据库接口检查中验证。 模拟器截图:[首次要求卡密](../artifacts/verification/login-card-required.png)、[激活后工作台](../artifacts/verification/login-card-activated.png)、[管理员入口](../artifacts/verification/login-card-admin.png)。正式签名 Release 包使用生产包名及原有签名密钥,固定地址仍为 `http://175.178.121.98:5188`;本机地址替换仅用于独立测试编译,未写入正式源码或交付 APK。