|
|
2ce97243ab
|
fix: 全量代码审计修复 — 30项
Deploy Backend / deploy (push) Has been cancelled
P0 - Panic 风险修复:
- payment.rs: unwrap() → let-else safe handling
- payment.rs: get_jwt_secret() expect → Result/AppError
- auth.rs: openid 切片添加 len >= 8 守卫
- main.rs: 启动时 expect → unwrap_or_else 描述性 panic
- main.rs: Directive::from_str 添加 fallback
P1 - 逻辑/安全修复:
- payment.rs: urlencoding() + 解码 bug 修复 (移除 had_escape)
- payment.rs: Mock 支付添加 check_mock_payment_allowed 检查
- db.rs: 永久会员 NULL → 2099-12-31 一致化
- user.rs: 维护模式添加安全说明注释
- 自动清理 unused_variables 警告 (_is_mobile)
P2 - 错误吞没修复:
- main.rs: 3 处定时任务 let _ = → if let Err = tracing::error!
- db.rs + admin.rs: 7 处通知/审计日志 let _ = → tracing::warn!
- auth.rs: refresh token 保存 add warn 日志
P3 - 死代码清理:
- models.rs: 移除 TokenResponse (dead)
- models.rs: 移除 AppState 中 5 个未使用字段 (env var 直接读取)
- error.rs: 移除 3 个 dead ErrorResponse 方法
- rate_limiter.rs: extract_client_ip_from_header → #[cfg(test)]
- models.rs: 注释 typo fix (user_ytpe → user_type)
- db.rs: RefreshToken 添加 deserialization 注释
Shell 脚本修复:
- deploy.sh: run_migrations 移到 restart_service 之前
- test.sh: 移除 EXIT trap 覆盖; heredoc 引号修复; 维护模式添加 restart
- common.sh: mock_key 添加 sed 转义 (防 / & 注入)
验证: cargo check 0 warnings, 8 tests passed
|
2026-07-23 12:40:47 +08:00 |
|
|
|
a7ffd387d9
|
feat: 添加访客登录 API (POST /api/guest-login) 支持网站独立支付
Deploy Backend / deploy (push) Has been cancelled
- 新增 web_guest_login handler: 创建访客用户(免微信 code),返回 JWT
- 路由注册在公共区(无需 JWT 认证)
- /payment 页面新增「访客登录」按钮,直接选择套餐支付
- 保留微信小程序登录作为备选
- 已部署到 dev.xmclassmate.top 验证通过
|
2026-07-20 15:08:30 +08:00 |
|
|
|
38ee5ccbc6
|
feat: 所有页面添加ICP备案号 浙ICP备2026052792号
Deploy Backend / deploy (push) Has been cancelled
|
2026-07-13 17:30:06 +08:00 |
|
|
|
178008496e
|
优化: Keep-Alive/rate-limiter/dead-code清理 + deploy.sh蓝绿自动检测 + 压测文档
|
2026-07-03 19:45:57 +08:00 |
|
|
|
da4af50b45
|
fix: mock_login支持X-Mock-Key请求头鉴权 + deploy自动配置随机密钥
|
2026-05-25 16:27:01 +08:00 |
|
|
|
722ab837d0
|
refactor: is_paid→is_member, paid_expires_at→membership_expires_at 全局重命名
|
2026-05-25 15:33:31 +08:00 |
|
|
|
5f3b919e92
|
fix: 添加后台定时重试 + 管理员强制确认 + 审计日志 + mock守卫
|
2026-05-25 13:04:19 +08:00 |
|
|
|
af2837e15e
|
fix: 修复付费机制失效处理的5个后端缺口
- 新增POST /payment/refund-notify支付宝退款Webhook
- 新增待支付订单自动清理(超过24h→cancelled, 含启动清理)
- 新增web登录码过期启动清理
- 永久会员用NULL替代硬编码2099-12-31
- 修复缺失的is_paid_active数据库函数(改用内联SQL)
|
2026-05-25 12:07:15 +08:00 |
|
moira
|
27c8979690
|
fix: 全量代码审计修复—安全/死代码/错误处理/配置净化
P0 安全修复:
- 支付宝回调验签 (alipay_notify BTreeMap + rsa2_verify)
- JWT fallback 'default_secret' 改为 .expect() (panic保底)
- 安全响应头中间件 (CSP/X-Frame-Options/HSTS)
P1 死代码清理:
- 移除孤儿文件 src/alipay.rs (284行, 无mod注册)
- 移除Cargo未使用依赖 (actix-files/error/log/hex/digest)
- log::info! → tracing::info! (auth.rs)
- 移除 config.rs server_host + 3个TOML定义
P1 质量修复:
- 修复 weather.rs unwrap() → unwrap_or
- 修复 auth.rs+payment.rs 错误吞咽 (add tracing::warn)
- 修复 main.rs 3x parse().unwrap → unwrap_or
P3 运维:
- 新增 scripts/backup-db.sh (定时备份用)
- 新增 README.md (快速入门文档)
- deploy.sh 集成 backup-db.sh 上传
|
2026-05-13 17:20:31 +08:00 |
|
|
|
061c2bbb5a
|
fix: 修复多处代码质量问题-移除unwrap/println/dead-code/重复代码/错误吞咽
|
2026-05-11 13:38:41 +08:00 |
|
|
|
580e68b58c
|
feat(payment): 支持 URL 参数直接传递 JWT 登录
|
2026-04-27 13:13:32 +08:00 |
|
|
|
aa84bbc4e6
|
feat(auth): 修复网页端登录流程,移除 web_generate_login_code 的 JWT 依赖
|
2026-04-27 09:08:25 +08:00 |
|
|
|
e6048ea010
|
feat(auth): 实现登录限流和性能优化
性能优化:
- 添加数据库索引优化查询性能 (006)
- weather_data: user_id, date, is_favorite 索引
- users: openid 索引
- payment_orders: status 索引
- 新增 refresh_tokens 表支持双 Token 机制 (004)
- 新增 web_login_codes 表支持网页端扫码登录 (005)
安全增强:
- 实现基于 IP 的登录限流 (rate_limiter.rs)
- 滑动窗口算法: 5次/分钟/IP
- 自动清理过期记录
- 429 TooManyRequests 响应
新模块:
- src/rate_limiter.rs: 限流模块
- src/alipay.rs: 支付宝签名模块 (RSA2)
- src/error.rs: 统一错误类型 (含 TooManyRequests)
- src/handlers/meta.rs: 元数据处理器
代码清理:
- 修复 .gitignore 规则,正确跟踪 src/ 和 migrations/
|
2026-04-24 16:13:49 +08:00 |
|
|
|
3bcfd9a4e6
|
fix(auth): web_login_confirm 加日志排查 + 精确匹配code
|
2026-04-24 14:27:26 +08:00 |
|
|
|
92fb4e3687
|
fix(auth): web_login_confirm 查询改为精确匹配 code,修复 unwrap_or(None) 问题
|
2026-04-24 11:01:16 +08:00 |
|
|
|
c66d1303ef
|
fix(auth): 统一登录码参数名为 code(与前端保持一致)
|
2026-04-24 10:56:33 +08:00 |
|
|
|
034aa66ed8
|
feat(payment): 实现网页端登录码流程(无需微信登录)
- 新增 GET /payment/generate-code:网页端生成 ASD-XXXXXX 登录码
- 新增 GET /payment/login-status:网页轮询查询登录码确认状态
- web_generate_login_code 和 web_login_confirm 增加 JWT 保护
- payment_index JS 改为真实调用 generate-code 并轮询
- 添加 rand crate 依赖
|
2026-04-24 10:51:06 +08:00 |
|
|
|
31bafee0ab
|
feat(payment): 重构网页端支付登录流程——小程序生成临时码、网页端扫码确认
- 后端新增 /api/web-login/code (生成临时登录码) 和 /api/web-login/confirm (确认登录)
- 后端新增 /payment/login-status (GET, 轮询登录状态)
- payment_index 页面完全重写:未登录时显示微信扫码登录入口;登录后显示套餐或会员信息
- 沙箱环境下 /payment 通过 mock-login 跳过真实微信认证,方便测试
|
2026-04-24 09:43:18 +08:00 |
|
|
|
ea705f0917
|
feat(auth): 添加沙箱测试用 mock_login 接口 (GET /api/mock-login)
|
2026-04-23 13:11:10 +08:00 |
|
|
|
e14c85436b
|
feat(auth): 添加 Refresh Token 双 Token 机制
- 添加 /api/refresh-token 接口支持 Token 续期
- 登录接口返回 access_token 和 refresh_token
- 新增 refresh_tokens 表存储 refresh_token
- 部署脚本添加数据库备份和迁移功能
- deploy.sh 添加 4 项 API 测试
- 更新 AGENTS.md 文档
|
2026-04-19 16:01:41 +08:00 |
|
|
|
a819a0db91
|
fix: 调整路由顺序,修复静态文件被JWT拦截的问题
- 将 /static/{tail:.*} 路由移到受保护 scope 之前
- 确保静态文件无需认证即可访问
|
2026-04-15 11:51:59 +08:00 |
|