回滚bug修复

This commit is contained in:
2026-04-14 14:11:06 +08:00
parent 0f88844e10
commit cda3c3345f
3 changed files with 56 additions and 10 deletions

View File

@@ -166,3 +166,28 @@
- 第 148 行 JS 渲染处:`<td>${student.parent_phone || '-'}</td>` 改为根据 `userRole` 判断渲染内容:班主任显示真实手机号,其他角色显示 `***`
- 第 156 行空数据提示处:`colspan="6"` 需根据角色动态调整——班主任 6 列,非班主任 5 列(可用 PHP 输出:`colspan="<?php echo $role === '班主任' ? '6' : '5'; ?>"`
- 新增学生表单(第 101-129 行)和导入学生功能中的手机号字段保持不变,任何有学生管理权限的角色都能录入(与 proposal 一致)
### 阶段 7修复 AuthMiddleware 401 无限循环
- [x] 7.1 AuthMiddleware 添加调试日志和修复潜在问题
【目标对象】`backend/middleware/auth_middleware.py`
【修改目的】修复 401 无限循环问题。当前 AuthMiddleware 注册为全局中间件后,所有非公开路径的请求都需要 JWT 认证,但缺少详细日志无法定位 Token 验证失败的具体原因。需要添加详细日志并修复 OPEN_PATHS 未被检查的 Bug。
【修改方式】在 dispatch 方法中添加每个认证步骤的调试日志,修复 OPEN_PATHS 逻辑,添加更多公开路径
【修改内容】
- 在 dispatch 方法中每个关键检查点添加 logger.debug 日志:
1. 请求路径和方法
2. Authorization header 是否存在
3. JWT 验证结果(成功时记录 user_id失败时记录原因
4. Redis Token 查询结果stored_token 是否存在、是否匹配)
- 修复 OPEN_PATHS 未被检查的 Bug在 is_public_path 检查后增加 OPEN_PATHS 检查OPEN_PATHS 中的路径跳过 Token 验证但仍继续到路由层
-`/api/auth/me``/api/auth/change-password` 添加到 PUBLIC_PATHS目前 OPEN_PATHS 逻辑未被 dispatch 使用,导致这些路径被拦截)
- `_cors_response` 方法中的 allowed_origins 改为从 config.settings 读取,而非硬编码
- [x] 7.2 前端 common.js 添加 401 防循环机制
【目标对象】`frontend/assets/js/common.js`
【修改目的】防止 401 响应导致的无限刷新循环。当前 apiRequest 在收到 401 时直接 clearAuth + redirect如果用户重新登录后 Token 仍然无效(如 Redis 重启),会形成 401 → 登录 → 401 → 登录的无限循环。
【修改方式】在 401 处理逻辑中添加防循环机制
【修改内容】
- 在 401 处理中添加路径判断:如果当前已在 `/index.php`(登录页),不执行重定向
- 添加重定向频率限制:使用 sessionStorage 记录最近一次 401 重定向时间,如果 5 秒内重复 401停止重定向并在控制台输出警告
- 清除认证信息后,在跳转前添加延迟或在 URL 中添加标记参数,防止浏览器缓存导致的循环