Files
FruitServer/docs/plans/2026-10-17-K16.md

1.8 KiB

2026-10-17 K16 注册限流可配置

范围

将 C 端注册的 IP/设备 24 小时限流阈值从硬编码改为后台 sys_config 配置:

app.register.max-per-ip-per-day
app.register.max-per-device-per-day

运行时优先读取后台配置;键缺失或非整数时回退 @Value 注入值(默认 5/3); 值小于等于 0 时跳过对应 guard。注册接口、错误码和错误文案不变。

实现

  1. AppAuthService 注入 ConfigService,从 sys_config 优先读取两个键; 再用 @Value 注入 yml 值作为缺失/非法时的 fallback。
  2. sql/data-phase1.sql 幂等写入开发默认 0/0 和说明。
  3. application.yml 只声明 fallback(默认 5/3),运行时不以后台固化值为准。
  4. docs/api-phase1.md §1.1 补充后台配置键、缺省/非法回退和 0=不限制口径。
  5. 测试 mock ConfigService,覆盖自定义、0、缺省/非数字回退。
  6. 确认后台「系统设置」页面可访问 /admin/configs;若现有表单未展示新键, 记录为待后续 Web 表单补充,不把配置固化回 yml。

验证与交付

  • mvn test
  • mvn -pl fruitshorts-app-api -am package -DskipTests
  • 停止当前 8081 服务,启动新 jar,/healthz 通过
  • 使用新设备号连续注册至少 4 次,确认不再 429(接口自检)
  • 后台把 IP 上限临时改为 2:前两次成功,第三次返回 429;恢复 0 后继续注册成功
  • feature/backend-register-rate-config-fix 以 --no-ff 合并回 develop 并 push
  • PROGRESS 记录命令、原始输出和解读

风险

  • 配置 0 会关闭注册滥用保护,仅用于当前开发环境;生产需在后台恢复 5/3。
  • 旧 8081 服务重启期间会有短暂不可用。
  • 限流仍基于客户端可伪造 IP/设备号,本次不放宽其他风控。