From 342f9958aacee423b197fc4ba394d08de00ec72f Mon Sep 17 00:00:00 2001 From: BrunoGao Date: Sun, 7 Sep 2025 00:07:20 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8DDocker=E7=8E=AF?= =?UTF-8?q?=E5=A2=83=E4=B8=8B=E7=99=BB=E5=BD=95=E8=B7=B3=E8=BD=AC=E5=A4=B1?= =?UTF-8?q?=E8=B4=A5=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## 问题描述 在Docker容器环境中,用户登录成功后无法正常跳转到目标页面,而直接运行的前端可以正常跳转。 表现为:登录成功提示显示为红色错误样式,且不会执行页面跳转。 ## 根本原因 Docker构建时缺少关键环境变量配置,导致前端无法正确判断后端响应的成功状态: - VITE_SERVICE_SUCCESS_CODE 在构建时为 undefined - isBackendSuccess 判断失败:String(200) === undefined → false - 成功的登录响应被错误地当作失败处理 ## 修复内容 ### 1. 修复Docker环境变量配置 (Dockerfile.prod) - 添加 VITE_SERVICE_SUCCESS_CODE=200 - 添加 VITE_SERVICE_LOGOUT_CODES=600,401 - 添加 VITE_SERVICE_MODAL_LOGOUT_CODES=401 - 添加 VITE_SERVICE_EXPIRED_TOKEN_CODES=40101 ### 2. 修复refreshToken处理 (auth/index.ts) - 处理后端只返回token,没有refreshToken的情况 - 避免存储undefined到localStorage ### 3. 添加调试日志 (request/index.ts) - 在isBackendSuccess中添加调试输出 - 便于后续问题排查 ## 测试验证 - ✅ Docker环境登录跳转正常 - ✅ 成功提示显示为绿色 - ✅ 登录后正确跳转到目标页面 - ✅ 不影响非Docker环境的正常功能 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- ljwx-admin/Dockerfile.prod | 5 +++++ ljwx-admin/src/service/request/index.ts | 8 +++++++- ljwx-admin/src/store/modules/auth/index.ts | 3 ++- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/ljwx-admin/Dockerfile.prod b/ljwx-admin/Dockerfile.prod index 14295a9..b067ca5 100644 --- a/ljwx-admin/Dockerfile.prod +++ b/ljwx-admin/Dockerfile.prod @@ -36,6 +36,11 @@ ENV VITE_HTTP_PROXY=Y ENV VITE_SERVICE_BASE_URL=/proxy-default ENV VITE_BIGSCREEN_URL=/proxy-default ENV VITE_OTHER_SERVICE_BASE_URL='{"demo": "/proxy-default"}' +# 添加缺失的关键环境变量 +ENV VITE_SERVICE_SUCCESS_CODE=200 +ENV VITE_SERVICE_LOGOUT_CODES=600,401 +ENV VITE_SERVICE_MODAL_LOGOUT_CODES=401 +ENV VITE_SERVICE_EXPIRED_TOKEN_CODES=40101 # 构建生产版本 RUN pnpm run build diff --git a/ljwx-admin/src/service/request/index.ts b/ljwx-admin/src/service/request/index.ts index 9ff6ab6..a15ea60 100644 --- a/ljwx-admin/src/service/request/index.ts +++ b/ljwx-admin/src/service/request/index.ts @@ -71,7 +71,13 @@ export const request = createFlatRequest { async function loginByToken(loginToken: Api.Auth.LoginToken) { // 1. stored in the localStorage, the later requests need it in headers localStg.set('token', loginToken.token); - localStg.set('refreshToken', loginToken.refreshToken); + // 修复:如果后端没有返回refreshToken,则使用空字符串 + localStg.set('refreshToken', loginToken.refreshToken || ''); // 2. get user info const pass = await getUserInfo();