## 问题描述 用户输入验证码后一直提示"验证码已过期" ## 根本原因 Session配置问题导致验证码无法正确保存和读取: 1. saveUninitialized: false 导致验证码请求时session不会被创建 2. 缺少 sameSite 属性导致某些情况下cookie无法正确传递 ## 修复方案 ### Session配置优化 - saveUninitialized: false → true (确保验证码请求时创建session) - 添加 name: 'captcha.sid' (自定义session cookie名称) - 添加 sameSite: 'lax' (防止CSRF同时确保同站请求携带cookie) ### 验证码生成API增强 - 添加 req.session.save() 确保session立即保存 - 添加调试日志输出SessionID和验证码内容 ### 登录API调试 - 添加详细的验证码验证日志 - 输出SessionID、失败次数、验证码匹配情况 - 帮助快速定位问题 ## 测试建议 1. 清除浏览器Cookie 2. 输错密码2次触发验证码 3. 查看后端日志确认SessionID一致 4. 输入正确验证码应该能通过验证 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
91 KiB
91 KiB