feat: add rate limiting and startup options validation

This commit is contained in:
xiong
2026-07-26 13:46:17 +08:00
parent f4783c5de3
commit 015c9b5582
9 changed files with 204 additions and 2 deletions

View File

@@ -75,6 +75,23 @@ Tiku.IntegrationTests # EF 模型/持久化约束测试
- 不默认允许 credentials如果后续需要 cookie 模式或管理后台单独域名,需要显式配置。
- 多租户正式域名确定后,可以把 CORS 白名单从静态配置升级为“租户域名 + 平台管理域名”的集中策略。
### 限流
- API 接入 ASP.NET Core RateLimiter作为全局兜底防线。
- 匿名请求按 IP 分桶,已登录请求按用户分桶,减少同学校/同机构出口 NAT 下的误伤。
- 默认使用固定窗口限流:
- 生产默认 `600 / minute`
- 开发默认 `1200 / minute`
- 被限流时返回标准 `429 Too Many Requests`,响应体包含 `code = rate_limited``traceId`
- 当前先使用进程内限流;多实例部署时,需要上移到网关/负载均衡层,或接入 Redis 等集中式限流状态。
### 配置校验
- 关键配置使用 Options validation并在启动阶段 `ValidateOnStart()`
- JWT 配置会校验 issuer、audience、签名密钥长度、access/refresh token 有效期范围。
- CORS 配置会校验 Origin 必须是绝对 `http/https` origin开启 credentials 时必须显式配置 origin。
- RateLimit 配置会校验 permit/window/queue 范围,避免错误配置在运行时才暴露。
### 热路径集合处理
- API 项目引入 ZLinq作为低分配集合处理工具。