fix(#558): 微信登录3个后端修复 - 验证码500 + 绑定500 + state校验 #684
Reference in New Issue
Block a user
Delete Branch "fix/558-wechat-login-fixes"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
修复内容
1. /auth/send-verification-code 500
from app.dependencies import get_db函数名错误,正确名称为get_db_session2. /auth/bind-contact 500
get_db导入错误3. 微信回调接口增加 state 校验(防 CSRF)
MemoryStateStore,state 有效期 10 分钟测试
🚀 预览环境已部署
代码审查结果 - PR #684
⚠️ 问题(1个需要修改)
db = next(get_db_session())手动获取数据库会话。如果get_db_session是标准的生成器依赖(包含yield db和finally: db.close()),直接调用next()仅获取会话对象,函数结束后生成器未被耗尽或关闭,导致finally块中的db.close()永远不会执行。这将造成数据库连接泄露,高并发下会导致连接池耗尽服务不可用。💡 建议(1个可选)
threading.Lock会阻塞事件循环。虽然WechatOAuthService是同步类,但在异步路由中调用其方法(持有锁时)会阻塞整个事件循环,降低并发性能。建议将MemoryStateStore改为异步实现(使用asyncio.Lock),或者确保该服务在线程池中运行。✅ 格式检查通过 | ❌ 逻辑审查需修改 | ⚠️ 建议关注性能
🤖 由 AI 代码审查机器人自动生成 | 2026-07-21 14:43:51 | 模型:
🗑️ 预览环境已清理
PR #684 已关闭或合并,对应的预览环境已被清理。