登录与安全
这篇讲清楚登录是怎么工作的、有哪些限制、遇到问题怎么办。
登录
只用一个字段:秘钥。
秘钥由管理员创建。登录时浏览器会同时上报一个设备标识(首次访问时生成并存在本地),后端把「秘钥 + 设备」绑定成一个会话。
登录成功后:
- 会话默认有效期 30 天,期间免登录。
- 每个设备只保留一个会话——同一浏览器重复登录不会占用额外名额。
三层校验
每次请求后端都会校验:
- 秘钥是否有效——是否被停用、是否过期。
- IP 是否在白名单内——如果账号配了白名单,IP 不匹配会被拒绝(403)。
- 设备是否匹配——请求带的设备标识必须和会话绑定的设备一致,否则返回「设备不匹配」。
设备上限
账号有一个「最大设备数」(1–50)。每在一个新浏览器登录就占一个名额。
名额占满时登录会失败,提示「该账号已达到设备上限(N 台),请联系管理员释放设备」。解决办法:
- 在其它已登录的浏览器里退出登录(会释放那台设备)。
- 或者请管理员点「释放设备」。
换浏览器、用无痕模式、清理浏览器缓存都可能导致设备标识变化,从而占用新的名额。
会话失效的情况
以下操作会让你的会话立即失效,需要重新登录:
- 管理员点了「释放设备」
- 管理员修改了你的秘钥
- 账号过期或被停用
- 你的会话超过 30 天
任何一次请求收到 401,前端会自动登出并回到登录页。
角色
| 角色 | 权限 |
|---|---|
| 普通用户 | 全部复盘 / 分组 / 监控功能 |
| 语音 Worker | 内部语音流水线专用,被限制只能访问语音相关接口 |
限流
接口有频率限制,正常使用不会触发:
| 场景 | 限制 |
|---|---|
| 登录 | 10 次 / 分钟(按 IP) |
| 普通接口 | 300 次 / 分钟(按用户) |
| 实时涨跌幅批量接口 | 240 次 / 分钟(前端常驻轮询单独放宽) |
触发限流会返回 429,并在响应头里带上 Retry-After。稍等即可。
站点安全策略
- 生产环境启用 HTTPS,HTTP 自动跳转。
- 响应头带 CSP(
script-src 'self'),目的是防止 XSS 注入外部脚本偷取登录态。 - 全站
X-Frame-Options: DENY,不能被嵌到别的页面里。 - 秘钥在数据库里以加盐哈希存储,不存明文。
常见问题
Q:提示「设备不匹配」怎么办? 清掉浏览器本地存储后重新登录,或者找管理员释放设备。通常是因为浏览器数据被部分清理导致设备标识变了。
Q:换了 Wi-Fi 就登不上了? 账号可能配了 IP 白名单。请联系管理员把你的新 IP 加进去。
Q:密码能自己改吗? 不能。「账号设置」里改的只是显示用户名,不是登录秘钥。秘钥只能由管理员重置。