53 lines
3.1 KiB
Markdown
53 lines
3.1 KiB
Markdown
# 桌面登录 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 认证测试脚本通过。
|
||
额外覆盖了记住密码、会话续期、强制下线及患者权限拒绝;尚未使用真实账号在线登录验证。
|