arun
1
启用 双因素备份代码 后,确认新邮箱地址时会失败并出现以下错误:
哎呀
驱动本讨论论坛的软件遇到了意外问题。对此造成的不便,我们深表歉意。
已记录有关该错误的详细信息,并生成了自动通知。我们将对此进行查看。
无需采取进一步操作。但如果该错误持续存在,您可以通过在网站的反馈类别中发布讨论主题,提供包括复现步骤在内的更多详细信息。
此问题在多个 Discourse 部署中均出现,因此并非特定于某一实例。
关闭 双因素备份代码 功能可解决该问题,邮箱验证可正常完成。
复现该问题的完整步骤如下:
- 从任意 Discourse 上的账户开始(可使用 https://try.discourse.org/ 进行测试)
- 使用 TOTP 设置双因素认证(尚未测试物理安全密钥)
- 更改账户邮箱
- 点击发送至新邮箱的验证邮件。请注意,此时验证成功。
- 在双因素认证设置中启用
双因素备份代码。
- 再次更改账户邮箱。
- 点击发送至最新邮箱的验证邮件。请注意,此时验证失败并出现前述错误。
- 关闭
双因素备份代码。
- 再次更改邮箱。
- 点击发送至最新地址的验证邮件。
- 系统会提示您输入 TOTP 验证码。
- 此次新邮箱的验证成功完成。
4 个赞
作为管理员登录网页浏览器后,您是否检查过 /logs 以查看实际错误?如果这是一个真正的漏洞,我们应该在我们的网站上看到它。
另外,这是与安全密钥相关,还是与 TOTP 令牌相关?无论如何,我们需要具体的复现步骤(在开发环境中,或在 try.discourse.org 上),以便我们确认。
3 个赞
补充一下,Caddy 论坛那边似乎没有看到相关的日志错误。
2 个赞
arun
6
好观点。这仅在启用了 双因素备用代码 时才会出现问题。我已更新帖子,补充了新的详细信息和复现步骤。
1 个赞
我们如何看待这些重现步骤 @tshenry?这个顺序对我来说有点奇怪。
1 个赞
arun
8
我并非指邮件需要多次更新。这是为了说明,仅当启用了备用代码时,邮件验证才会失败,否则不会。
tshenry
(Taylor)
10
这里确实存在一个 bug。为了进一步细化复现步骤:
- 使用 TOTP 设置两步验证(2FA)
- 启用备用代码
- 更改电子邮件地址
- 点击确认邮件中的验证链接
- 被重定向到“哎呀”(Oops)页面
我可以确认,禁用备用代码会立即解决此问题,即使使用相同的电子邮件验证链接也是如此。
错误日志显示:
ActionView::Template::Error (缺少 partial common/_second_factor_form_script,查找条件为 {:locale=>[:en_US, :en], :formats=>[:html], :variants=>[], :handlers=>[:raw, :erb, :html, :builder, :ruby]}。搜索路径:
* "/var/www/discourse/app/views"
)
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionview-6.0.1/lib/action_view/path_set.rb:48:in `find'
我认为这与以下代码行有关:https://github.com/discourse/discourse/blob/master/app/views/users_email/confirm.html.erb#L36
该行引用了一个确实缺失的文件:discourse/app/views/common at main · discourse/discourse · GitHub
8 个赞
谢谢 @arun —— 我们应该修复这个问题 @eviltrout
4 个赞