> 原始 Markdown 孪生体（构建期从源 Markdown 生成）。渲染页：https://docs.gatellm.io/zh-CN/console/login-and-roles · 文档索引：https://docs.gatellm.io/zh-CN/llms.txt


# 控制台登录与角色

控制台（Web Console）是管理 GateLLM 的界面，地址 `http://localhost:7890/console`（本机；部署到别处把 `localhost` 换成你的网关地址）。本章讲怎么登录、有哪些角色、各角色能做什么、会话与改密。

## 登录

1. 浏览器打开 `http://localhost:7890/console`。
2. 输入用户名、密码，点登录。

```text
┌─────────────────────────────┐
│           GateLLM           │
│                             │
│  用户名  [____________]     │
│  密码    [____________]     │
│                             │
│       [ 登录 ]              │
└─────────────────────────────┘
```

- 登录校验故意稍慢（约 200–400ms）属正常，是防爆破设计。
- 登录成功后浏览器保留登录态（cookie）。

## 首次账号

首次启动且控制台无任何用户时，网关自动创建默认管理员：

- 用户名：`protoflux`
- 密码：`CONSOLE_PASSWORD` 环境变量的值（未设时首次启动自动生成并打印一次到日志）
- `CONSOLE_PASSWORD` 只在这一刻（控制台用户表为空）被读取。之后修改它并重启**不会**改密，也不会报错——改密只能在控制台→「控制台用户」页，忘密码走下面的 `RESET_ADMIN`。

忘记密码时，设环境变量 `RESET_ADMIN=<新密码>` 后重启即重置（**仅生效一次**）。需再次重置：重新设 `RESET_ADMIN` 为新值再重启。重置成功后去掉该环境变量再重启，可避免每次重启告警。

> 首次登录后**立即改密**。

## 角色与权限 {#roles-and-permissions}

**能登录控制台的账户只有两类——`admin` 与 `monitor`**：

| 控制台账户 | 定位 | 可见页面 |
|------|------|---------|
| `admin` | 全权管理员 | 全部页面，全部操作 |
| `monitor` | 只读监控 | 概览、统计、日志、设置（只读） |

> **关于 `normal_user`**：`normal_user` 是系统里的一个角色，但**不允许登录控制台**——它只有 **API key 的使用权**（作为访问密钥的持有/使用者，经 API key 调用网关），不进控制台。控制台的管理与查看由 admin / monitor 承担。

页面可见性（「文档」列链到该页的操作/字段说明）：

| 页面 | admin | monitor | 文档 |
|------|:-----:|:------:|------|
| 概览 Overview | ✓ | ✓ | [总览仪表板](/zh-CN/console/overview-dashboard.md) |
| 控制台用户 | ✓ | — | [控制台用户管理](/zh-CN/console/user-management.md) |
| 上游服务 | ✓ | — | [上游与模型字段](/zh-CN/reference/upstreams-models-fields.md) |
| 负载均衡器 | ✓ | — | [负载均衡字段](/zh-CN/reference/load-balancing-fields.md) |
| 访问密钥 | ✓ | — | [访问密钥与密钥组字段](/zh-CN/reference/access-keys-groups-fields.md) |
| MCP 服务器 | ✓ | — | [MCP 配置](/zh-CN/reference/mcp-config.md) |
| 统计 | ✓ | ✓ | [统计](/zh-CN/console/statistics.md) |
| 日志 | ✓ | ✓ | [日志查看器](/zh-CN/console/logs-viewer.md) |
| 工具（批量配置） | ✓ | — | [批量配置](/zh-CN/console/config-batch.md) |
| 设置（System / Telemetry / 联网搜索 / 审计） | ✓ | 部分（见备注） | [设置：系统与遥测](/zh-CN/console/settings.md) |

> **设置页的子页签按角色收敛**：System / Telemetry 对 admin + monitor 可见；**联网搜索**与**审计（Audit）**子页签仅 admin 可见。审计见 [审计与安全配置](/zh-CN/reference/audit-and-security-config.md)。

## 会话

- 会话有效期 24 小时，**滑动续期**：剩余寿命不足 50% 时自动续回 24 小时。
- 多实例部署时，会话存于 Redis，所有实例共享。
- 操作入口（左侧栏底部菜单）：
  - **查看当前用户**：`whoami`，返回用户名与角色。
  - **切换语言**：中文 / English 即时切换控制台界面语言。
  - **修改密码**：需填当前密码 + 新密码（新密码 ≥8 字符）。改密时可勾选「同时撤销其他设备的会话」。
  - **登出**：撤销当前会话。

会话会在以下情况被**自动吊销**（无需手动操作）：管理员重置密码、禁用账号、删除账号后，相关会话都会失效，对方登录页会显示原因（`password_changed` / `disabled_by_admin` 等）。

## 安全 {#security}

- **默认访问范围取决于运行方式**：裸机/源码运行时 `allow_remote` 默认 `false`，控制台只接受 loopback（127.0.0.1）请求；**官方 Docker 镜像经 `CONSOLE_ALLOW_REMOTE=true` 默认放行远程访问**（这是 zero-config 主路径能从宿主机打开控制台的原因）。如需收紧，设 `CONSOLE_ALLOW_REMOTE=false` 或在挂载的 `server.toml` 里写 `allow_remote = false`。远程暴露务必配合反代/防火墙。
- **登录防爆破**：连续登录失败达阈值自动临时封禁该 IP（默认 20 次失败封 300 秒）。封禁是自动的，没有手动封禁/解封的入口。
- **密码哈希**：bcrypt。
- **安全响应头**：控制台路由带 `X-Content-Type-Options: nosniff`、`X-Frame-Options: DENY`、`Referrer-Policy`、`Content-Security-Policy`，防点击劫持与内容嗅探。

## 常见问题

**Q：远程打不开控制台，提示 403？**
说明 `CONSOLE_ALLOW_REMOTE` 被设成了 `false`（裸机默认即此值）。设 `CONSOLE_ALLOW_REMOTE=true`（并配合反代/防火墙做好暴露控制），或通过 SSH 端口转发在本机访问。

**Q：登录连续失败被锁了？**
等几分钟（默认封禁 300 秒）自动解封。封禁是按 IP 的，换设备登录可能仍被锁——因为同出口 IP。

**Q：normal_user 能登录控制台吗？**
不能。能登录控制台的只有 `admin` 与 `monitor`；`normal_user` 只有 API key 的使用权（作为访问密钥的持有者调用网关），不进控制台。要在控制台做管理，用 admin 账户。

**Q：monitor 能看日志吗？**
能看（日志页对 monitor 可见），但不能做任何写操作。

**下一步**：[总览仪表板](/zh-CN/console/overview-dashboard.md) 查看仪表板；[控制台用户管理](/zh-CN/console/user-management.md) 管理控制台用户；[访问密钥与密钥组字段](/zh-CN/reference/access-keys-groups-fields.md) 管理调用方凭证；[上游与模型字段](/zh-CN/reference/upstreams-models-fields.md) 配置上游。
