# Changelog — 登录 IP 门禁 + SPA 无感切换(2026-06-08) ## 摘要 非白名单 IP 登录页仅展示提示卡(无表单);已登录 SPA 侧栏切页通过 keep-alive、数据缓存与预取减少白屏与重复请求。 ## 动机 - 白名单开启时,非授权 IP 不应闪现用户名/密码表单。 - 登录成功与侧栏导航频繁 remount 导致白屏与重复拉数,影响 2000+ 子机运维体验。 ## 涉及文件 | 区域 | 文件 | |------|------| | P0 后端 | `server/utils/login_allowlist.py`、`server/api/auth.py`、`server/api/auth_jwt.py`、`server/application/services/auth_service.py` | | P0 前端 | `frontend/src/pages/LoginPage.vue` | | P1 路由壳 | `frontend/src/App.vue`、`frontend/src/constants/cachedPages.ts` | | P2 激活刷新 | `frontend/src/composables/usePageActivateRefresh.ts`、12 页 `*Page.vue`(排除 Terminal/Login) | | P3 缓存 | `frontend/src/composables/useCachedQuery.ts`、`useServerCategories.ts`、`DashboardPage.vue`、`ServersPage.vue` | | P4 预取/骨架 | `frontend/src/composables/useRoutePrefetch.ts`、`DashboardPage.vue`、`ServersPage.vue` | | 测试 | `tests/test_login_access.py` | ## 迁移 / 重启 - 无 DB 迁移。 - 需重启 API;前端需 `npm run build` 并部署 `web/app/`。 ## 验证 ```bash pytest tests/test_login_access.py bash scripts/local_verify.sh cd frontend && npm run build bash deploy/pre_deploy_check.sh ``` 浏览器:非白名单 IP 无登录表单;白名单登录;侧栏往返 5 页无白屏。 ## 回滚 Revert 本批次 commit;P0 可独立 revert,不影响已登录会话。