From b5cafb9678207e5fe570012a9c6770c0832c3527 Mon Sep 17 00:00:00 2001 From: ZhenYi <434836402@qq.com> Date: Wed, 22 Apr 2026 20:54:24 +0800 Subject: [PATCH] fix(admin): touchSession persist state, platform session prefix to user:, middleware pass permissions header --- admin/src/lib/auth.ts | 3 ++- admin/src/lib/redis.ts | 2 +- admin/src/middleware.ts | 1 + 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/admin/src/lib/auth.ts b/admin/src/lib/auth.ts index bc28082..b450a1f 100644 --- a/admin/src/lib/auth.ts +++ b/admin/src/lib/auth.ts @@ -167,7 +167,8 @@ export async function touchSession(sessionId: string): Promise { const state = await loadSession(sessionId); if (!state) return; state["session:last_active"] = new Date().toISOString(); - await refreshSessionTtl(sessionId, ADMIN_SESSION_TTL); + const { saveSession } = await import("@/lib/redis"); + await saveSession(sessionId, state, ADMIN_SESSION_TTL); } // ============ 登出 ============ diff --git a/admin/src/lib/redis.ts b/admin/src/lib/redis.ts index b379da6..2004cfb 100644 --- a/admin/src/lib/redis.ts +++ b/admin/src/lib/redis.ts @@ -10,7 +10,7 @@ import { REDIS_URL, REDIS_CLUSTER_URLS } from "./env"; // Admin 专用的 Redis 前缀 const ADMIN_PREFIX = "admin:session:"; // 平台用户 Session 前缀(与 Rust 主应用一致) -const PLATFORM_SESSION_PREFIX = "session:user_uid:"; +const PLATFORM_SESSION_PREFIX = "user:"; let redis: Redis | null = null; diff --git a/admin/src/middleware.ts b/admin/src/middleware.ts index c1a62c7..cb0380a 100644 --- a/admin/src/middleware.ts +++ b/admin/src/middleware.ts @@ -124,6 +124,7 @@ export async function middleware(req: NextRequest) { permissions = tokenResult.permissions || []; headers.set("x-admin-auth-type", "token"); headers.set("x-admin-token-id", String(tokenResult.tokenId)); + headers.set("x-admin-permissions", permissions.join(",")); } else { // 回退到 Session 认证 const cookieHeader = req.headers.get("cookie");