26 lines
2.0 KiB
Markdown
26 lines
2.0 KiB
Markdown
# 架构决策:下线未实现的微信网页 OAuth
|
||
|
||
> 日期:2026-08-02
|
||
> 决策:删除 `GET /api/wechat/authorize`、`GET /api/wechat/callback` 与 `WECHAT_REDIRECT_URI`
|
||
> 保留:微信小程序手机号核验登录 `/api/user/wx-phone-login`
|
||
|
||
## 背景
|
||
|
||
旧代码保留了一组公开网页 OAuth demo:授权地址使用 `qrconnect`,回调没有向微信换取身份,而是把请求中的 `code` 拼成 `demo_openid_` 后返回“微信授权成功”。它不签发 Petstore session,但会对外表达不存在的身份核验结果,也让生产发布多维护一个实际不使用的 `WECHAT_REDIRECT_URI`。
|
||
|
||
当前试点只有小程序登录:客户端通过 `getPhoneNumber` 与 `wx.login` 获取一次性 code,后端 `WechatMiniProgramService` 分别向微信换取已核验手机号和 openid/unionid,再由 `/api/user/wx-phone-login` 建立真实账号与 session。Admin、H5 和小程序源码均未调用旧网页 OAuth 端点。
|
||
|
||
## 决策
|
||
|
||
1. 删除 `WechatController` 与只服务于它的 `WechatConfig`;旧路径不再公开放行,也不提供伪成功兼容响应。
|
||
2. 生产配置和 release preflight 不再要求 `WECHAT_REDIRECT_URI`;`WECHAT_APPID`、`WECHAT_APPSECRET` 继续作为小程序服务必填项。
|
||
3. 从机器本体和动作文档删除两个 deprecated/gap 入口,使本体只描述实际存在的 HTTP 契约。
|
||
4. 不在本阶段补做 PC 扫码登录、公众号网页授权或第二套账号绑定模型;未来若有真实场景,必须以独立 PRD、威胁模型和新 API 契约重新设计。
|
||
|
||
## 兼容与发布影响
|
||
|
||
- 数据库无迁移,现有 session、用户、预约、报告和小程序登录不受影响。
|
||
- 若外部仍请求旧路径,将不再得到 demo 成功响应;这属于预期的 fail-closed 行为。
|
||
- 生产环境文件应删除废弃变量,避免运维人员误以为仍需配置网页回调。
|
||
- 三角色验收继续只验证微信小程序手机号核验、员工邀请手机号一致性和旧注册入口 410,不验证网页 OAuth。
|