桌面登录 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 错误明确提示管理员补部署专用接口。
部署顺序
本修复包未发布到线上,不能仅重启桌面软件来生效。
- 备份线上待修改文件。把
zyt/server/app/adminapi/controller/DesktopController.php部署到实际提供admin.zhenyangtang.com.cnAPI 的项目对应目录。 - 核对同一线上版本已经支持桌面终端。以下在
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 校验, 无须设置免密登录,也无须把用户密码转交客服后台。
- 让提供该域名的 PHP 服务加载新代码(若使用 OPcache,按现有发布流程刷新)。
匿名 GET
https://admin.zhenyangtang.com.cn/adminapi/desktop/session应返回 JSON 登录失效响应(通常code=0),不应为 404,更不应返回有效身份。 - 把
kefu/wechat_rpa/zyt_auth.py更新到实际运行客服 API 的同名模块位置, 按现有部署方式重启客服 API。当前项目的 Docker 部署说明位于deploy/im-admin/README.md。 - 在桌面软件重新输入账号和密码,重新获取 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 认证测试脚本通过。 额外覆盖了记住密码、会话续期、强制下线及患者权限拒绝;尚未使用真实账号在线登录验证。