也许我在这里遗漏了一些东西,或者这是 Auth0 中的一个缺陷?我将举例说明我的问题:
假设我有我的 Default App
( 客户端 ),连接到我有 Username-Password-Authentication
( 数据库连接 ) 和 google-oauth2
( 社交关系 )。
一位用户来到我的网站,通过 google-oauth2
注册( 社交联系 ) 使用 joe@gmail.com .完成后,他会在 Auth0 中添加到我的用户中,一切都很棒。
几个月后,Joe 回到我的网站,作为一个忙碌的人,他忘记了他以前注册过我的网站。这一次,他决定使用我的自定义电子邮件和密码表单进行注册,这会将用户添加到 Username-Password-Authentication
。 ( 数据库连接 )。所以他在那里注册使用 joe@gmail.com 再次,一切顺利,他现在列在我的 Auth0 仪表板的用户部分中。
这就是问题所在,我现在有两个 joe@gmail.com 帐户,与 google-outh2
之一和一个 Username-Password-Authentication
.我真的不能拥有这个,我需要一个唯一的电子邮件地址,无论 ID Auth0 提供什么。
有谁知道如何使我的用户部分中的电子邮件地址 100% 唯一?我认为规则可以做到这一点,但似乎规则仅在用户注册后才适用,所以我不能在添加之前运行规则?
我现在可以看到这样做的唯一方法是通过管理 API 进行我自己的检查和删除,但我觉得这是一种非常漫长而困惑的方法。
任何帮助将不胜感激!
谢谢!
最佳答案
Auth0 的默认行为是在数据库中为每个唯一条目创建一个新帐户。由于使用 Google 创建的用户具有唯一 ID(基于 google-oauth2),而使用注册表单创建的用户具有唯一 ID - 从技术上讲,它们将被视为两个单独的帐户。为了解决这种差异,您可以建立一种可以合并帐户数据的方法。在上面提供的链接文档中,有执行此操作的三种可能方法的示例:
需要考虑的一件重要事情是,从不同社交身份提供者返回的数据可能不会像数据标准化到
Username-Password-Database
那样标准化。 .例如,虽然 auth0 对电子邮件的默认设置是小写信息,但 google-oauth2
可能会以大写形式返回电子邮件 - 当使用严格相等进行检查时,可能会产生不匹配的电子邮件
关于Auth0 数据库和社交联系,唯一的电子邮件地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48391300/