sudoman
(Andrew E)
1
我们的一位用户拥有两个 Discourse 账户:一个已不再使用,另一个新账户却无法登录。原因似乎是该用户在我们 CAS SSO 提供商上的新账户,与他们在论坛上的旧账户使用了相同的电子邮件地址。
我用自己的测试账户进行了实验,尝试停用该账户并删除 SSO 记录。但这似乎阻止了该账户的新登录,因为现有记录不再与 SSO 负载匹配,导致该电子邮件地址被视为冲突。
我还尝试更改该用户未使用的 Discourse 账户上的电子邮件地址,以便他们能使用新账户的邮箱登录。但这需要电子邮件确认。我在 SMTP 服务器上设置了一个邮件别名,以便拦截任意地址。然而,在点击链接时,我需要通过 SSO 以该用户身份登录。问题在于,这将迫使我重新激活该用户账户、设置新密码、将其账户链接到我们的会员数据库,并在我们的 SSO 提供商上创建一个虚假会员身份。这固然可行,但我觉得自己正陷入一个错综复杂的局面,只为纠正该用户的账户问题。
通过数据库并运行一些 SQL 查询来直接修改数据,我过去曾这样做过,但这存在风险,如果可能的话,我更倾向于避免这种方法。
如果不会破坏 Discourse 的功能,我非常希望能有一个功能,允许我删除已停用账户上的电子邮件地址,而不仅仅是将其设置为未确认状态。
如果还有其他方法可以解决此问题,请告诉我。谢谢!
simon
3
我认为您正在使用 Discourse 的 SSO 实现,并在 SSO 载荷中将 require_activation 参数设置为 true。如果是这样,请查看此主题以了解修复该问题的详细信息:https://meta.discourse.org/t/debugging-and-fixing-common-sso-issues/103496。运行该主题中提供的 Rails 控制台命令比直接使用 SQL 查询更新数据库更安全。
正如上述帖子所述,合并两个账户可能是一个不错的方案,但在完成该操作后,您可能需要对 SSO 记录进行一些调整。
此外,我刚刚通过搜索“合并用户账户”发现了这个功能。在活跃用户列表(管理仪表板)中点击用户,然后滚动到底部,即可看到下方显示的三个按钮,该功能目前仍然可用。
Discourse 2.5.0.beta3 Release Notes
通过 UI 合并用户
我们在 2018 年初添加了将两个用户账户合并的功能。当时需要 SSH 访问服务器才能执行,因为合并支持是作为 rake 任务添加的。
现在,任何管理员都可以合并用户!访问用户管理页面,在页面底部选择“转移并删除”。
输入您希望将账户合并到的用户名,然后点击“转移并删除 @用户名”以开始合并过程。
sudoman
(Andrew E)
5
感谢您的建议和在此问题上的帮助。我下周会在一些测试账号上尝试一下,如果遇到任何重大问题,我会及时告知您。谢谢 : )
sudoman
(Andrew E)
6
好的,一切顺利。当我合并账户时,Discourse 保留了目标账户(即被合并/未被删除的账户)的 SSO 凭证,另一个账户则被删除了。
感谢您的帮助。: )