# 管理员删除首选项中的双因素密钥后被锁定在站点之外

**URL:** <https://meta.discourse.org/t/admin-locked-out-of-site-after-deleting-two-factor-keys-from-prefs/184193>\
**Category:** Bug\
**Created:** [2021 年3 月 23 日 15:11 UTC](https://meta.discourse.org/t/admin-locked-out-of-site-after-deleting-two-factor-keys-from-prefs/184193 "2021-03-23T15:11:49Z")\
**Posts on this page:** 1\
**Showing post:** 17

<div class="post-metadata">

作者： ![RGJ](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/rgj/32/523185_2.png) [@RGJ](https://meta.discourse.org/u/RGJ)\
发布日期： [2022 年2 月 14 日 23:07 UTC](https://meta.discourse.org/t/admin-locked-out-of-site-after-deleting-two-factor-keys-from-prefs/184193/17 "2022-02-14T23:07:25Z")

</div>

我已成功复现此问题，并找到了使用控制台的解决方案。

复现步骤与首帖描述略有不同。步骤 2 至关重要，步骤 3 和 4 相对不那么重要。

1. 在一个已启用一个或多个双重身份验证密钥（如安全密钥和身份验证器应用）的最新 Discourse 网站上，成为一名用户（ ~~管理员~~ ）。
2. **启用备份代码**
3. ~~能够使用这些双重身份验证密钥成功登录和退出~~ 。
4. ~~确保强制双重身份验证登录的网站设置为“否”~~ 。
5. 使用 ~~管理员~~ 用户配置文件首选项的安全选项卡中的标准 UI 工具，删除您 ~~（管理员）~~ 帐户中的所有双重身份验证项目（身份验证器和安全密钥）。
6. 退出登录。

发生的情况是，如果删除了所有双重身份验证项目，备份代码仍然存在于数据库中，并且在登录时双重身份验证并未被视为已禁用。

由于不再有身份验证器或安全密钥，用户无法使用备份代码。

一旦删除了所有身份验证器和密钥，甚至无法在配置文件 - 安全中删除备份代码。

建议修复：当用户的所有安全项目被删除时，备份代码也应一并删除。

解决方法：从数据库中删除此用户的所有 `UserSecondFactor` 记录。

`UserSecondFactor.where(user_id: 1).delete_all`

---

_[View the full topic](https://meta.discourse.org/t/admin-locked-out-of-site-after-deleting-two-factor-keys-from-prefs/184193)._
