--- name: session-20260620-2 description: 2026-06-20 第2次会话 — 修复TokenAuthFilter Redis Key前缀遗漏导致登录后Token找不到会话 metadata: type: session date: 2026-06-20 sessionNumber: 2 startTime: 2026-06-20T10:45:00+08:00 endTime: 2026-06-20T10:55:00+08:00 --- # 2026-06-20 第2次会话 ## 会话摘要 修复 TokenAuthFilter 中 Redis Key 缺少 `GATEWAY:` 前缀的 bug。上次会话给 RedisUtil 加了统一前缀机制后,Auth/Admin 服务都改为使用 `RedisUtil.key()` 生成 key,但 Gateway 的 TokenAuthFilter 被遗漏,导致登录后 Token 校验时找不到 Redis 会话。 ## 关键操作 ### TokenAuthFilter Redis Key 前缀修复 - **做了什么**: `TokenAuthFilter.java` 中两处 Redis key 改为 `RedisUtil.key("auth:token:" + tokenId)` 和 `RedisUtil.key("open:token:" + tokenId)` - **原因**: 上次会话(session-1)引入 `RedisUtil.KEY_PREFIX = "GATEWAY:"` 和 `key()` 方法后,Auth 服务写入 key 是 `GATEWAY:auth:token:xxx`,但 Gateway 读取时直接拼 `"auth:token:" + tokenId`(无前缀),导致永远找不到。这是一个重构遗漏 bug。 - **结果**: 修复后 Gateway 正确使用 `RedisUtil.key()` 生成带前缀的 key,与 Auth/Admin 服务写入的 key 一致 - **涉及文件**: `TokenAuthFilter.java` (第115行和第183行) ### 问题诊断过程 - **日志现象**: `Token 对应 Redis 会话不存在 - tokenId: 43a705df-fdc7-4b97-b5eb-605d3c081897` - **数据流追踪**: 1. 登录 → Auth 服务写入 `GATEWAY:auth:token:43a705df-...` ✓ 2. 校验 → Gateway 查找 `auth:token:43a705df-...` ✗ (缺少 GATEWAY: 前缀) - **根因**: `RedisUtil.key()` 自动添加 `GATEWAY:` 前缀,但 TokenAuthFilter 没使用此方法 ## 重要信息 - Redis 前缀机制详情见 [[session-20260620-1]] 的 "Redis Key 加统一前缀 GATEWAY:" 章节 - Auth 服务(32001)、Admin 服务(32002)、Gateway(32000) 三个服务共享同一个 Redis 实例 - 所有 Redis key 操作都必须通过 `RedisUtil.key()` 方法,不能直接拼字符串 ## 待处理 - [x] 重新编译部署 Gateway 服务使修复生效 (10:54 已部署到 10.1.1.170 Docker 容器 mokeegateway-mokee-gateway-gateway) - [ ] 验证登录后 Token 校验正常通过(用户自行测试) ## 部署记录 - **服务器**: 10.1.1.170(内网) - **容器名**: mokeegateway-mokee-gateway-gateway - **容器 ID**: 09bc559da896 - **镜像**: harbor.zgitm.com/mokee/mokee-mokeegateway-mokee-gateway-gateway:v78.20260620102948 - **部署方式**: SCP JAR → docker cp 替换 /app/app.jar → docker restart - **启动耗时**: 约 5.5 秒 - **部署时间**: 2026-06-20 10:54 ## 新规则 - **部署 170 须用户授权**: 后续没有用户明确要求,不能擅自部署到 10.1.1.170(生产环境)。[[deploy-approval-required]]