# 全局 JWT 中间件（F2a-10 / F2d-02）

**日期**: 2026-05-22

## 变更

- `server/api/auth_jwt.py`：新增 `JwtAuthMiddleware`，对所有 `/api/*` 请求在路由处理前校验 Bearer JWT；公开前缀见 `PUBLIC_PREFIXES`（含 `/api/install/`、`/api/auth/logout`）。
- `server/main.py`：在 `DbSessionMiddleware` 内层注册中间件（保证 `request.state.db` 可用）。
- `get_current_admin`：复用 `request.state.admin`，避免重复查库。
- 安装模式（无 `.env`）跳过 JWT 中间件，由 `InstallModeMiddleware` 返回 503。

## 纵深防御

路由层 `Depends(get_current_admin)` 保留；即使新路由漏挂 Depends，中间件仍会返回 401。

## 验证

```bash
pytest tests/test_step0_infrastructure.py::TestJWTAuth tests/test_nexus_v6.py::TestJWTAuth tests/test_security_unit.py -q
```
