Repository navigation
Two Factor Sign In.zh CN
houyhl edited this page Oct 17, 2026
·
3 revisions
每位用户都可以为自己的账号开启两步验证。输入正确的密码后,登录还需要以下任意一种:
| 第二步 | 用户需要 |
|---|---|
| 身份验证器验证码 | 身份验证器应用(Google Authenticator、Microsoft Authenticator、密码管理器等),每 30 秒显示一个 6 位验证码 |
| 通行密钥 | 设备的指纹、面容或屏幕锁,或安全密钥。通行密钥需要通过 HTTPS 访问本站(或 localhost),见 HTTPS
|
| 恢复码 | 首次开启时显示的 10 个一次性恢复码之一 |
在用户自己开启之前,所有账号的两步验证都是关闭的。不需要修改配置文件,也不需要重启。
- 登录后打开用户菜单 → 编辑资料 → 安全,找到 两步验证。
- 选择其一或两者都设置:
- 身份验证器应用 → 设置:用应用扫描二维码(或手动输入旁边显示的密钥),输入应用显示的 6 位验证码,然后选择 开启。
-
通行密钥 → 添加通行密钥:可修改名称,然后在浏览器弹窗中确认。通行密钥只在添加时的网站地址有效:在
https://oj.example.com添加的通行密钥不能用于其他域名或 IP 地址。
- 保存只显示一次的恢复码(下载或复制)。服务器只保存其哈希;生成新的恢复码 会替换全部旧恢复码。
移除最后一个身份验证器和通行密钥后,两步验证随之关闭,恢复码也会被删除。
输入密码后,登录页会要求完成第二步。如果账号在本站有通行密钥且浏览器支持,会优先显示通行密钥;使用身份验证器验证码、使用恢复码 可以切换方式。每个验证码只能使用一次。一次登录中答错 5 次需要重新输入密码;15 分钟内失败 10 次后,该账号会暂时无法完成第二步验证。
通过邮件重置忘记的密码会修改密码,但登录前仍需完成第二步。
有些修改要求在本次登录会话的最近 10 分钟内输入过密码。否则会弹出 确认身份 对话框,要求输入密码(已开启两步验证时还需完成第二步),确认后再完成修改。无论是否开启两步验证,此规则对所有账号生效:
- 修改自己的邮箱(总是需要)、密码(已开启两步验证时)和两步验证设置;
- 用户管理员修改他人的密码、邮箱或两步验证;
- 站点管理员修改用户权限和详细权限、站点管理 中的注册方式和 AI 设置,以及添加、删除评测机或重置评测机密钥。评测机 页面不再列出密钥:点击钥匙图标并确认身份后,一次只显示一个密钥,每次查看都会记入审计日志。
取消对话框不会做任何修改。
登录会话连续 30 天未使用、或登录满 90 天后失效。站点管理员的会话失效得更早:连续 3 天未使用、或登录满 30 天。修改方法见 后端配置。
会话失效或在其他设备上被退出后,页面会提示 登录会话已结束 并提供 登录 按钮,而不是悄悄把你当作访客。
站点管理员,或拥有“管理用户”权限的用户(不能对管理员账号这样做),打开该用户的 安全 页面并选择 关闭两步验证。之后该用户可仅用密码登录,并重新设置。此操作会记录在审计日志中。
- 身份验证器密钥使用
two-factor.key加密。该文件创建在后端私有密钥目录(HYHOJ_AI_STATE_DIR,通常为/opt/LLMOJ/data/ai),与 AI 的master.key放在一起;backup.sh会备份此目录。恢复数据库备份时必须同时恢复对应的two-factor.key:缺少它时,已开启用户的身份验证器验证码将无法使用(后端不会静默创建新密钥);他们的通行密钥和恢复码仍可使用,管理员也可以为他们关闭两步验证。 - 升级工具会创建
user_two_factor和user_passkey两张表。只要仍有账号开启了两步验证,它会拒绝回滚到不支持两步验证的版本,因为旧版本只凭密码就会让这些账号登录。请先为这些账号关闭两步验证,或修复新版本。 - 通行密钥会校验浏览器报告的网站地址。使用反向代理时,公开访问地址必须是 HTTPS,见 HTTPS。
简体中文
- LLMOJ Wiki
- AI 环境与固定限制
- AI
- 后端配置
- 功能升级与数据库修改
- 配置总览
- 比赛赛制
- 分布式评测
- Docker 源
- 环境变量与维护脚本
- 前端配置
- HTTPS 与反向代理
- Hack
- 安装与端口配置
- 评测配置与扩缩容
- 安装后运维
- 发布源码与 Wiki
- 新用户注册审核
- 远程评测机
- NOI / OI 比赛自测(Self Eval)
- 题解
- Fake 处罚
- 提交记录
- 团队
- 两步验证
- 升级
English
- LLMOJ Wiki
- AI
- AI environment and fixed limits
- Backend configuration
- Feature upgrades and database changes
- Configuration overview
- Contest rules
- Distributed judging
- Docker sources
- Environment variables and maintenance scripts
- Frontend configuration
- HTTPS and reverse proxies
- Hacks
- Installation and ports
- Judge configuration and resizing
- Operations
- Publishing source and the wiki
- Registration approval
- Remote judges
- Self Eval in NOI / OI contests
- Solutions
- Fake moderation
- Submissions
- Teams
- Two-factor sign-in
- Upgrading