Files
cmautobuy/docs/task/55-用户密码最小长度调整为6个字符.md
T
2026-08-09 16:15:30 +08:00

2.9 KiB

55 Admin:用户密码最小长度调整为 6 个字符

  • 类型:需求
  • 父级大工单:#14
  • 所属 MVP / 版本:#15 Admin 四模块可用闭环
  • 状态:已完成
  • 日期:2026-08-09
  • Gitea 工单:#55

背景与目标

Admin 原来要求密码至少 8 个字符。用户要求创建用户时改为至少 6 个字符。 首次管理员初始化、创建采购员和重置密码共用同一套密码策略,因此本任务把三个入口 统一为至少 6 个字符,避免出现前后端或不同页面规则不一致。

最终方案

  • 服务端最小密码长度常量从 8 改为 6,仍按 Unicode 字符数判断。
  • 首次管理员、创建采购员、重置密码的密码和确认密码字段全部改为 minlength="6"。
  • 初始化、创建和重置表单都显示“至少 6 个字符”的辅助文字;服务端校验失败 明确提示至少需要 6 个字符。
  • 最大 72 个字节、确认密码、bcrypt 哈希、错误信息防账号枚举、重置后撤销 Session 等既有安全规则不变。
  • 增加 5 个字符拒绝、6 个字符初始化/创建/重置成功以及模板属性和文案测试。

实际实现与建单方案一致,没有数据库或 Client API 变更。

改了哪些

  • admin/service/auth.go:最小密码长度改为 6。
  • admin/templates/auth/setup.html:初始化管理员表单规则和提示同步为 6。
  • admin/templates/user/list.html:创建与重置密码表单规则和提示同步为 6。
  • admin/service/auth_test.go、admin/service/user_test.go:覆盖服务端边界值。
  • admin/auth_integration_test.go、admin/user_integration_test.go:覆盖模板属性与文案。
  • docs/admin/01-requirements.md、05-ui-specification.md、 06-quality-security.md:记录统一密码规则和测试要求。

验收结果

验收标准 结果
5 个字符被拒绝并提示至少 6 个字符 通过
6 个字符可初始化管理员 通过
6 个字符可创建采购员和重置密码 通过
三类表单密码与确认密码均为 minlength="6" 通过
三类表单显示至少 6 个字符的辅助文字 通过
最大长度、确认密码、bcrypt 和 Session 撤销保持不变 通过
页面和日志不回显密码 通过
格式、静态检查和全量测试通过 通过
Go 1.23.0 构建和无缓存测试通过 通过

测试

  • 执行的命令:cd admin; gofmt -w .; go vet ./...; go test ./...
  • 执行的命令:$env:GOTOOLCHAIN="go1.23.0"; go build ./...; go test ./... -count=1; Remove-Item Env:GOTOOLCHAIN
  • 结果:go version go1.23.0 windows/amd64;构建成功,所有测试通过。
  • 没验证到的部分:未单独进行人工浏览器验收;真实路由和模板渲染已由集成测试覆盖。

相关提交

  • 2cce9e3 fix: 用户密码最小长度调整为六位 (#55)