From 8f7d3fcadf6e4d159f3cea6d388fa24ae14a8d6e Mon Sep 17 00:00:00 2001 From: shaw Date: Tue, 15 Jul 2025 18:43:32 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E5=91=98=E4=BC=9A=E8=AF=9D=E9=94=AE=E5=90=8D=E5=86=B2=E7=AA=81?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 恢复管理员会话管理的原始键名格式 session:${sessionId} - 更改sticky会话映射使用独立前缀 sticky_session:${sessionHash} - 避免sticky会话功能与管理后台会话冲突 - 添加sticky_session:*到cleanup清理模式 - 确保向后兼容性,管理后台功能正常 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- src/models/redis.js | 13 +++++++------ src/utils/sessionHelper.js | 2 +- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/models/redis.js b/src/models/redis.js index f02739d2..5036b354 100644 --- a/src/models/redis.js +++ b/src/models/redis.js @@ -407,18 +407,18 @@ class RedisClient { // 🔐 会话管理(用于管理员登录等) async setSession(sessionId, sessionData, ttl = 86400) { - const key = `admin_session:${sessionId}`; + const key = `session:${sessionId}`; await this.client.hset(key, sessionData); await this.client.expire(key, ttl); } async getSession(sessionId) { - const key = `admin_session:${sessionId}`; + const key = `session:${sessionId}`; return await this.client.hgetall(key); } async deleteSession(sessionId) { - const key = `admin_session:${sessionId}`; + const key = `session:${sessionId}`; return await this.client.del(key); } @@ -665,17 +665,17 @@ class RedisClient { // 🔗 会话sticky映射管理 async setSessionAccountMapping(sessionHash, accountId, ttl = 3600) { - const key = `session:${sessionHash}`; + const key = `sticky_session:${sessionHash}`; await this.client.set(key, accountId, 'EX', ttl); } async getSessionAccountMapping(sessionHash) { - const key = `session:${sessionHash}`; + const key = `sticky_session:${sessionHash}`; return await this.client.get(key); } async deleteSessionAccountMapping(sessionHash) { - const key = `session:${sessionHash}`; + const key = `sticky_session:${sessionHash}`; return await this.client.del(key); } @@ -686,6 +686,7 @@ class RedisClient { 'usage:daily:*', 'ratelimit:*', 'session:*', + 'sticky_session:*', 'oauth:*' ]; diff --git a/src/utils/sessionHelper.js b/src/utils/sessionHelper.js index 6f040b82..c4abb430 100644 --- a/src/utils/sessionHelper.js +++ b/src/utils/sessionHelper.js @@ -100,7 +100,7 @@ class SessionHelper { * @returns {string} - Redis键名 */ getSessionRedisKey(sessionHash) { - return `session:${sessionHash}`; + return `sticky_session:${sessionHash}`; } /**