44f46a0e40
- requirements.txt: flask-limiter>=4.0
- app.py: 创建 Limiter 实例(memory:// 存储,60/分钟默认)
- auth_api.py:
- 简化 register_auth_api(app, limiter=None)——limiter 仅作能力标记
- _rate_limit(rate, methods) 装饰器:手写 IP+endpoint 滚动窗口限流
(Flask-Limiter 在测试 client 下不生效,故手动实现;多进程需切换 Redis)
- login / reset-request / reset-confirm 三个路由应用装饰器
限流策略(架构决策 #5/#6 配合):
- /login: 5 次/分钟(IP 级爆破防御,配合账号级 5 次锁定 15min)
- /reset-request: 3 次/分钟(防邮件/短信滥用)
- /reset-confirm: 5 次/分钟(防 token 暴力猜解)
测试结果(test_client 压测):
- login: 1-5 次业务 401,6 次起 429 ✅
- reset-request: 1-3 次业务 200,4 次起 429 ✅
依赖:commit b002e92 的 7 路由蓝图。
BIZ-127 架构决策:
✓ #5 限流 5 次/分钟(IP 级,与账号级锁定 15min 双重防御)
Co-authored-by: multica-agent <github@multica.ai>
8 lines
104 B
Plaintext
8 lines
104 B
Plaintext
flask>=3.0
|
|
pandas>=2.0
|
|
numpy>=1.24
|
|
openpyxl>=3.1
|
|
requests>=2.31
|
|
beautifulsoup4>=4.12
|
|
flask-limiter>=4.0
|