fix: 管理端改为账号密码登录 (#19) #29

Closed
opened 2026-08-22 08:54:15 +08:00 by ila · 0 comments
Owner

基本信息

  • 类型:缺陷修复
  • 所属 Epic:#3
  • 所属 MVP / 版本:#19 / MVP-1
  • 阶段:已完成

原始需求

  • 来源:用户对话。
  • 提出时间:2026-08-22
  • 脱敏摘要:管理端登录不需要验证码,只保留账号和密码登录。

目标与范围

管理端 POST /api/v1/login 只校验账号与密码,生产模式与开发模式行为一致;不注册验证码接口,也不重新启用 go-admin 的代码生成、Swagger、WebSocket 或静态文件路由。

非目标

  • 不修改管理员账号、密码、角色、JWT 配置或认证模型。
  • 不增加登录限流、二次验证、Cookie 登录或终端用户登录能力。
  • 不恢复 /api/v1/captcha,不启用生成工具路由。

已确认方案

  1. 将管理端登录请求模型收敛为 username 和 password 两个必填字段。
  2. 移除认证器中的验证码验证依赖,使 prod 与 dev 都按账号密码执行认证。
  3. 补充路由/认证测试,覆盖生产模式下账号密码成功、缺字段失败、错误密码失败,并确认验证码字段不再是契约要求。

影响与风险

  • 影响管理端登录接口的请求契约;已由用户明确确认改为无验证码登录。
  • 账号口令成为唯一认证因子;不在本工单中擅自扩展额外认证能力。
  • 不接触 Provider、生成、迁移或凭据密文边界。

回退方式

回退本工单实现提交即可恢复原有验证码依赖;不涉及数据库迁移或账号数据修改。

文档影响

  • 更新本地开发与验证:Wiki 已更新并同步镜像。
  • 更新架构与代码地图:已按用户确认恢复 Wiki 页面并同步镜像。
  • 不更新其他长期页面。

验收标准

  • 管理端登录只要求账号和密码;不再要求或校验验证码字段。
  • prod 与 dev 模式下均可使用相同账号密码契约登录。
  • 缺少账号/密码和错误密码仍被拒绝,且不泄露口令或哈希。
  • 不注册验证码、代码生成、Swagger、WebSocket 或静态文件路由。

验证

  • 已运行管理端相关单元测试、构建和 go vet。
  • 已使用隔离 MySQL 构造账号验证登录接口;不输出 JWT、DSN、口令或 bcrypt hash。

实施记录(2026-08-22)

  • 已实现:管理端登录请求仅保留必填 username、password,认证器不再按运行模式验证验证码;生产路由仍只注册登录、刷新、基础受限 API 与 Chorus 管理 API,不注册验证码或 go-admin 开发工具路由。
  • 提交与推送:f1044b6(fix: 管理端改为账号密码登录 (#29))。
  • 验证通过:go -C admin build .、隔离 chorus_test 且 CHORUS_RUN_ADMIN_TESTS=1 的 go -C admin test -count=1 ./...、go -C admin vet ./...、根模块 go test -count=1 ./...、go vet ./...、python dev_scripts/harness.py check --strict、python -m unittest discover -s tests -v、git diff --check。
  • 新增 MySQL HTTP 集成测试只创建随机后缀的构造管理员账号,覆盖生产模式无验证码成功登录、缺少密码和错误密码拒绝,结束后删除构造账号;不使用或输出真实口令、JWT、DSN 或 bcrypt hash。

文档完成情况

  • 已更新并在线回读 Local-Development-and-Verification,revision:c133df3e7f58ab1d066804fbc89110bc8172541c。
  • 用户于 2026-08-22 确认恢复缺失的 Architecture-and-Code-Map。页面已按现有镜像正文恢复并写入本次登录契约,在线回读 revision:a670339f38d3c83e267afa475dcd8b825c8ed8d6。\n- 已运行 python dev_scripts/harness.py sync 与 python dev_scripts/harness.py sync --check,全部核心镜像一致;镜像提交与推送:25a24d3(docs: 同步管理端登录契约 (#29))。\n- 本工单现处于待验收;未创建任务归档、未关闭工单、未导出 docs/task/。

验收与关闭(2026-08-22)

  • 用户已明确确认 #29 验收通过。
  • 任务归档:Task-29-管理端改为账号密码登录,revision:5ab0eb3cbfe73ce679e3ac9cd3c6ce551e30c3c7。
  • 核心 Wiki 镜像已在归档前通过 python dev_scripts/harness.py sync --check;任务归档仅保存在 Wiki,未导出 docs/task/。
  • 实现与文档提交均已推送:f1044b6、25a24d3。
## 基本信息 - 类型:缺陷修复 - 所属 Epic:#3 - 所属 MVP / 版本:#19 / MVP-1 - 阶段:已完成 ## 原始需求 - 来源:用户对话。 - 提出时间:2026-08-22 - 脱敏摘要:管理端登录不需要验证码,只保留账号和密码登录。 ## 目标与范围 管理端 `POST /api/v1/login` 只校验账号与密码,生产模式与开发模式行为一致;不注册验证码接口,也不重新启用 go-admin 的代码生成、Swagger、WebSocket 或静态文件路由。 ## 非目标 - 不修改管理员账号、密码、角色、JWT 配置或认证模型。 - 不增加登录限流、二次验证、Cookie 登录或终端用户登录能力。 - 不恢复 `/api/v1/captcha`,不启用生成工具路由。 ## 已确认方案 1. 将管理端登录请求模型收敛为 `username` 和 `password` 两个必填字段。 2. 移除认证器中的验证码验证依赖,使 `prod` 与 `dev` 都按账号密码执行认证。 3. 补充路由/认证测试,覆盖生产模式下账号密码成功、缺字段失败、错误密码失败,并确认验证码字段不再是契约要求。 ## 影响与风险 - 影响管理端登录接口的请求契约;已由用户明确确认改为无验证码登录。 - 账号口令成为唯一认证因子;不在本工单中擅自扩展额外认证能力。 - 不接触 Provider、生成、迁移或凭据密文边界。 ## 回退方式 回退本工单实现提交即可恢复原有验证码依赖;不涉及数据库迁移或账号数据修改。 ## 文档影响 - [x] 更新本地开发与验证:Wiki 已更新并同步镜像。 - [x] 更新架构与代码地图:已按用户确认恢复 Wiki 页面并同步镜像。 - [x] 不更新其他长期页面。 ## 验收标准 - [x] 管理端登录只要求账号和密码;不再要求或校验验证码字段。 - [x] `prod` 与 `dev` 模式下均可使用相同账号密码契约登录。 - [x] 缺少账号/密码和错误密码仍被拒绝,且不泄露口令或哈希。 - [x] 不注册验证码、代码生成、Swagger、WebSocket 或静态文件路由。 ## 验证 - 已运行管理端相关单元测试、构建和 `go vet`。 - 已使用隔离 MySQL 构造账号验证登录接口;不输出 JWT、DSN、口令或 bcrypt hash。 ## 实施记录(2026-08-22) - 已实现:管理端登录请求仅保留必填 `username`、`password`,认证器不再按运行模式验证验证码;生产路由仍只注册登录、刷新、基础受限 API 与 Chorus 管理 API,不注册验证码或 go-admin 开发工具路由。 - 提交与推送:`f1044b6`(`fix: 管理端改为账号密码登录 (#29)`)。 - 验证通过:`go -C admin build .`、隔离 `chorus_test` 且 `CHORUS_RUN_ADMIN_TESTS=1` 的 `go -C admin test -count=1 ./...`、`go -C admin vet ./...`、根模块 `go test -count=1 ./...`、`go vet ./...`、`python dev_scripts/harness.py check --strict`、`python -m unittest discover -s tests -v`、`git diff --check`。 - 新增 MySQL HTTP 集成测试只创建随机后缀的构造管理员账号,覆盖生产模式无验证码成功登录、缺少密码和错误密码拒绝,结束后删除构造账号;不使用或输出真实口令、JWT、DSN 或 bcrypt hash。 ## 文档完成情况 - 已更新并在线回读 `Local-Development-and-Verification`,revision:`c133df3e7f58ab1d066804fbc89110bc8172541c`。 - 用户于 2026-08-22 确认恢复缺失的 `Architecture-and-Code-Map`。页面已按现有镜像正文恢复并写入本次登录契约,在线回读 revision:`a670339f38d3c83e267afa475dcd8b825c8ed8d6`。\n- 已运行 `python dev_scripts/harness.py sync` 与 `python dev_scripts/harness.py sync --check`,全部核心镜像一致;镜像提交与推送:`25a24d3`(`docs: 同步管理端登录契约 (#29)`)。\n- 本工单现处于待验收;未创建任务归档、未关闭工单、未导出 `docs/task/`。 ## 验收与关闭(2026-08-22) - 用户已明确确认 `#29` 验收通过。 - 任务归档:`Task-29-管理端改为账号密码登录`,revision:`5ab0eb3cbfe73ce679e3ac9cd3c6ce551e30c3c7`。 - 核心 Wiki 镜像已在归档前通过 `python dev_scripts/harness.py sync --check`;任务归档仅保存在 Wiki,未导出 `docs/task/`。 - 实现与文档提交均已推送:`f1044b6`、`25a24d3`。
ila changed title from fix: ??????????? (#19) to fix: 管理端改为账号密码登录 (#19) 2026-08-22 09:12:24 +08:00
ila closed this issue 2026-08-22 09:23:35 +08:00
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: OPC/chorus#29