jord8on
(Jordan)
1
简而言之 - 当新的 WordPress 用户下订单或注册时,他们似乎以某种方式覆盖或连接到 Discourse 中的现有用户。不确定如何进行故障排除。
背景:
- 我们正在使用 wp-discourse 插件进行 SSO,其中 WordPress 是 DiscourseConnect 提供商。
- 我们启动了 Discourse 社区,托管在 Digital Ocean 虚拟机上
- 当我们启动 Discourse 社区并使用 wp-discourse 插件连接到 SSO 时,我们正在 AWS Lightsail 上托管 WordPress,并使用 Plesk 作为我们的控制面板
- 今年早些时候,我们迁移到了 Nexcess WordPress 托管,并且 Discourse 连接器似乎保持不变。
- 我们在迁移到新的 WordPress 安装时没有迁移我们的用户。它们已被导出,我们计划很快导入它们。
- 我们的 WordPress 网站已关闭一段时间,因为我们正在进行一些重大调整
在过去的几个月里,我们有很多用户在 WordPress (WooCommerce) 上下订单,我们注意到一些奇怪的现象……当你查看 WordPress 中的用户帐户并查看 Discourse Username 字段时,他们的用户名显示的是 Discourse 中现有用户的用户名。不知何故,我们与 Discourse 的连接似乎出了问题。一位用户今天刚注册,他们的 Discourse Username 是 tennisdpm,你可以看到这是一个 现有用户,他在 2020 年注册。
我们很快将迁移(添加)旧 WordPress 实例上拥有帐户的所有用户,并将他们添加到我们的新实例中,但考虑到现有用户和新注册用户之间似乎存在一些冲突,我们希望制定一个行动计划,以防止持续的冲突,并通过电子邮件作为唯一标识符与 Discourse 用户同步现有的 WP 用户,并在新 WP 用户加入时提供新的 SSO Discourse 帐户。
非常感谢您能提供一些帮助和指导,告诉我们应该如何进行!
现有的 wp-discourse 连接 SSO 设置:
听起来你的新 WP 用户正在获得与现有 DiscourseConnect 外部 ID 相对应的用户 ID。
2 个赞
jord8on
(Jordan)
3
哦,天哪!!感谢 @omarfilip 的提醒!有什么办法可以重置这个问题或防止它继续发生吗?或者我们可以在迁移完所有旧用户之前将其关闭吗?
我真的不确定最好的方法是什么。有多少记录需要修复?
jord8on
(Jordan)
5
我们目前在 WP 中大约有 80 名用户需要从当前似乎与之关联的 Discourse 用户中“分离”。然后,我们还需要从旧实例导入大约 750 名用户,并确保他们没有遇到我们目前遇到的相同问题。
我曾希望 WP 中的账户是基于电子邮件地址作为唯一标识符与 Discourse 账户关联……而不是外部/用户 ID。
angus
(Angus McLeod)
6
嘿 @jord8on,Discourse 上的匹配方式是,它首先尝试匹配外部 ID(在您更改 WordPress 数据库后,它现在指向不同的用户),然后尝试使用电子邮件地址进行匹配。使用 ID 作为首要匹配项有一些很好的理由。电子邮件并不是一个好的去中心化标识符。
所以您需要做的是删除在使用旧 WordPress 数据库时创建的 Discourse 中的单点登录记录。您可以使用日期时间来识别它们,例如,您可以在 Discourse 实例上执行以下操作:
./launcher enter app
rails c
SingleSignOnRecord.where("created_at < ?", 1.month.ago) // 检查这是否符合您的预期
SingleSignOnRecord.where("created_at < ?", 1.month.ago).delete_all
导入到新数据库的旧用户将根据电子邮件与他们现有的 Discourse 帐户进行匹配(因为他们新的 WordPress ID 将不会匹配任何 SSO 记录)。
我还建议删除 WordPress 中所有的 discourse_username 数据,并让它通过用户 webhook 自动重新同步。您需要运行此命令(可能使用 WP CLI),它会删除 discourse_username 元字段的所有条目。
delete_metadata( 'user', 0, 'discourse_username', '', true );
对于将来阅读此内容的人来说,如果您使用 DiscourseConnect 和一个 WordPress 数据库,然后迁移到一个全新的 WordPress 数据库而没有进行迁移,您将会遇到这类问题。在进行此类更改之前,您应该寻求帮助。
2 个赞