从 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。
如果您打算运行上述命令,请务必在执行命令前备份站点数据库。万一出现问题,您可以恢复备份文件。