# 2026-06-08 登录页 IP 优先检测

## 摘要

登录页 `/app/#/login` 严格按「先检测 IP → 再展示界面」：`checking` 期间仅深色底；非白名单或检测失败仅壁纸；白名单通过后再加载壁纸并显示登录卡。

## 动机

- 避免 IP 检测与壁纸请求并行导致时序模糊
- 网络/5xx 时不再 fail-open 露出登录框（与白名单拒绝一致，fail-closed）

## 涉及文件

- `frontend/src/pages/LoginPage.vue`

## 行为

| 阶段 | 界面 |
|------|------|
| `checking` | 深色底，无登录卡 |
| `blocked`（403 或任意非 200） | Bing 壁纸 + 遮罩，无登录卡、无提示 |
| `form`（200 allowed） | 壁纸 + 登录卡 |

## 迁移/重启

- 需重新构建并部署前端静态资源

## 验证

1. 非白名单 IP：`GET /api/auth/login-access` → 403；页面仅壁纸
2. 白名单 IP：`login-access` → 200；页面出现登录卡
3. `bash scripts/local_verify.sh`（后端 login-access 测试）
