Auth0 数据库和社交关系、唯一的电子邮件地址

Posted

技术标签:

【中文标题】Auth0 数据库和社交关系、唯一的电子邮件地址【英文标题】:Auth0 database and social connections, unique email addresses 【发布时间】:2018-07-01 15:47:18 【问题描述】:

也许我在这里遗漏了一些东西,或者这是 Auth0 中的一个缺陷?我将举一个我的问题的例子:

假设我有我的Default App客户端),我有Username-Password-Authentication数据库连接)和google-oauth2社交关系)。

一位用户来到我的网站,使用 joe@gmail.com 通过google-oauth2社交联系)进行注册。完成后,他会在 Auth0 中添加到我的用户中,一切都很好。

几个月后,乔回到我的网站,因为他是一个忙碌的人,他忘记了他以前注册过我的网站。这一次,他决定使用我的自定义电子邮件和密码表单进行注册,这会将用户添加到Username-Password-Authentication数据库连接)。所以他再次使用 joe@gmail.com 在那里注册,一切顺利,他现在列在我的 Auth0 仪表板的用户部分中。

这就是问题所在,我现在有两个 joe@gmail.com 帐户,一个是google-outh2,一个是Username-Password-Authentication。我真的不能拥有这个,我需要一个唯一的电子邮件地址,无论 ID Auth0 提供什么。

有谁知道如何让我的用户部分中的电子邮件地址 100% 唯一?我认为规则会这样做,但似乎规则仅在用户注册后才适用,所以我不能在添加之前运行规则?

我现在能看到这样做的唯一方法是通过管理 API 进行自己的检查和删除,但我觉得这是一个非常漫长而混乱的方法。

任何帮助都将在这里得到赞赏!

谢谢!

【问题讨论】:

【参考方案1】:

您正在寻找的选项称为帐户关联。 你可以在https://auth0.com/docs/link-accounts找到更多信息

【讨论】:

请不要发布仅链接的答案。要么在此处发布特定答案,要么仅将链接作为对该问题的评论发布。【参考方案2】:

Auth0 的默认行为是在数据库中为每个唯一条目创建一个新帐户。由于使用 Google 创建的用户具有唯一 ID(基于 google-oauth2),并且使用注册表单创建的用户具有唯一 ID - 从技术上讲,它们将被视为两个独立的帐户。为了解决这种差异,您可以建立一种可以合并帐户数据的方法。在上面提供的链接文档中,有三种可能的方法示例:

    Automatic Linking - 这涉及创建特定的 rule 以根据匹配的电子邮件合并用户 User-Initiated Linking - 涉及为用户提供一个用户界面,以选择将用户与匹配的电子邮件合并 Suggested Account Linking - 涉及设置链接到 UI 的规则

需要考虑的重要一点是,从不同社交身份提供者返回的数据可能不会像将数据标准化到 Username-Password-Database 的方式那样标准化。例如,虽然 auth0 对电子邮件的默认设置是小写信息,但 google-oauth2 可能会以大写形式返回电子邮件 - 当使用严格相等进行检查时,可能会产生不匹配的电子邮件

【讨论】:

以上是关于Auth0 数据库和社交关系、唯一的电子邮件地址的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Symfony 中访问已登录的 Auth0 用户的电子邮件地址?

如何在 Auth0 中存储用户全名而不是电子邮件地址?

Auth0 登录调用 Youtube Data API v3

Laravel JWT 和社交名流插件

Passport JS 和 Auth0 有啥关系?

将传入的电子邮件通过管道传输到 Windows IIS SMTP 上的脚本?