Files
kefu/deploy/desktop-auth-fix
2026-09-21 10:34:06 +08:00
..
i
2026-09-21 10:34:06 +08:00
i
2026-09-21 10:34:06 +08:00
i
2026-09-21 10:34:06 +08:00
i
2026-09-21 10:34:06 +08:00

桌面登录 IP 变化修复

2026-09-09 匿名检查结果:客服后台 /api/v2/desktop/auth/config 指向 https://admin.zhenyangtang.com.cn;该账号服务的 /adminapi/desktop/session 返回 HTTP 404。

桌面先直接向账号服务登录,客服后台再验证令牌。专用路由缺失时回退到 /adminapi/auth.admin/mySelf,ZYT 的 AuthMiddleware 将客服服务器 IP 与桌面登录 IP 比较,返回截图中的错误。重新输入密码不能解决路由缺失。

本地修复内容

  • ZYT 专用接口验证桌面终端 7、有效身份及未禁用账号,一次返回当前角色与权限。
  • 客服后台成功调用专用接口后不再调用网页 mySelf。旧版专用接口缺权限时, 保留未知权限状态,受权限控制的患者功能继续关闭。
  • 仅专用接口 HTTP 404/405 允许旧服务兼容;认证失败、错误终端、异常响应均不降级。
  • 旧服务的 IP 错误明确提示管理员补部署专用接口。

部署顺序

本修复包未发布到线上,不能仅重启桌面软件来生效。

  1. 备份线上待修改文件。把 zyt/server/app/adminapi/controller/DesktopController.php 部署到实际提供 admin.zhenyangtang.com.cn API 的项目对应目录。
  2. 核对同一线上版本已经支持桌面终端。以下在 C:/zyt 本地代码中已存在:
    • server/app/common/enum/AdminTerminalEnum.php:const WECOM_RPA = 7;
    • server/app/adminapi/validate/LoginValidate.php:terminal 的允许列表包含 AdminTerminalEnum::WECOM_RPA。
    • server/app/common/cache/AdminTokenCache.php:缓存身份包含 'terminal' => $adminSession->terminal。 若线上缺少这些项,合并对应项;保留线上其余业务代码。无须关闭网页 IP 校验, 无须设置免密登录,也无须把用户密码转交客服后台。
  3. 让提供该域名的 PHP 服务加载新代码(若使用 OPcache,按现有发布流程刷新)。 匿名 GET https://admin.zhenyangtang.com.cn/adminapi/desktop/session 应返回 JSON 登录失效响应(通常 code=0),不应为 404,更不应返回有效身份。
  4. 把 kefu/wechat_rpa/zyt_auth.py 更新到实际运行客服 API 的同名模块位置, 按现有部署方式重启客服 API。当前项目的 Docker 部署说明位于 deploy/im-admin/README.md。
  5. 在桌面软件重新输入账号和密码,重新获取 terminal=7 的会话。 核对普通账号能登录、权限正常、禁用账号和错误密码仍被拒绝。

包中不含账号、密码、数据库和环境配置。需要线上服务器部署入口才能完成上线验证。

回归验证

Python:test_zyt_auth、test_backend.ZytAdminTokenVerificationTest、 test_login_routing、test_desktop_login。 PHP:server/tests/AdminDesktopAuthContractTest.php、 server/tests/AdminDesktopSessionBehaviorTest.php。 行为测试使用内存身份,不访问真实账号数据库。

验证结果:52 项 Python 回归测试通过,2 个 PHP 认证测试脚本通过。 额外覆盖了记住密码、会话续期、强制下线及患者权限拒绝;尚未使用真实账号在线登录验证。