如何通过 API 删除 SSO 记录?我正在使用 Discourse 并更改 external_id,如何在保留用户和帖子的同时清除该用户的旧记录?
也许可以一次性在 Rails 控制台中删除所有 SSO 记录,然后让他们通过电子邮件重新连接?我不太确定你正在查找的是哪张表,但可能是类似下面的内容:
UserAssociatedAccount.all.destroy_all
我想关于这个问题还有一些其他讨论。你搜索过吗?
从 SSO 提供商传递的 external_id 预期是永不变的。如果可能,您应避免更改用户的 external_id 值。
只要您未将 SSO 参数 require_activation 设置为 true,就可以像 Jay 建议的那样删除所有 SSO 记录。为此,请进入您站点的控制台并运行:
SingleSignOnRecord.destroy_all
在执行此操作之前,您必须确认未在 SSO 负载中将 require_activation 设置为 true。如果设置了该参数,用户下次登录站点时将无法通过其电子邮件地址被找到。相反,他们尝试登录时会收到错误。
如果 require_activation 参数未设置为 true,用户下次登录 Discourse 时将通过其电子邮件地址被找到。此时将为他们创建一条新的 SSO 记录。如果您的 SSO 提供商站点与 Discourse 之间的任何用户的电子邮件地址不同步,他们下次登录 Discourse 时就会遇到问题。有关解决这些问题的详细信息,请参阅:https://meta.discourse.org/t/debugging-and-fixing-common-sso-issues/103496/1。
如果您打算运行上述命令,请务必在执行命令前备份站点数据库。万一出现问题,您可以恢复备份文件。
我的 Discourse 论坛使用的是标准计划,该计划是否允许访问 Rails 控制台?如果允许,我该如何操作?
发送电子邮件至 support@discourse.org 或在 /g/support 联系 @support,以执行上述命令。