gpt4 book ai didi

将多个用户帐户合并在一起的架构

转载 作者:行者123 更新时间:2023-12-03 04:16:39 30 4
gpt4 key购买 nike

好的,我有一个网站,您可以在其中注册并登录。您还可以使用您的 Facebook、Twitter 或 linkedin 帐户登录。

用户只能注册一个帐户,这一点很重要。因此,如果用户使用不同的方法登录,我想以某种方式合并他们的帐户。解决这个问题的最佳解决方案是什么?

例如,用户使用其 Facebook 帐户登录。我使用这些数据自动为他注册一个帐户。我应该发送包含我们网站的用户名和密码的电子邮件吗? (如果这符合 Facebook 的政策)。我应该给他们第二个屏幕,让他们填写用户名和密码吗?但这并不是使用 Facebook 帐户登录的初衷。它应该会简化您的参与程序。

也有可能用户已经在我们的网站上注册了自己,并且下次使用他的 Twitter 帐户登录时。如何将这 2 个帐户合并为一个?最好的方法是什么?

所以基本上我的问题是:我有 4 种不同的方式让用户成为我们网站的成员(member)。如果用户决定使用多种方式,如何确保这 4 种方式仅创建一个帐户?确保不会给用户自己带来麻烦的最佳流程是什么?

<小时/>

编辑:

在我提出这个问题三年后,我自己在一系列文章中给出了答案: https://www.peternijssen.nl/social-network-authentication-setup/
https://www.peternijssen.nl/social-network-authentication-google/
https://www.peternijssen.nl/social-network-authentication-merging-accounts/
https://www.peternijssen.nl/social-network-authentication-twitter-facebook/

最佳答案

我现在面临着完全相同的任务。我的设计相当简单,但效果很好。

核心思想是本地站点身份和第三方站点身份的模型保持隔离,但稍后链接。因此,登录该站点的每个用户都有一个本地身份,该身份映射到任意数量的第三方站点身份。

本地身份记录包含最少的信息 - 它甚至可以是单个字段 - 只是一个主键。 (对于我的应用程序,我不关心用户的电子邮件、姓名或出生日期 - 我只想知道他们是一直登录此帐户的人。)

第三方身份包含仅与第三方身份验证相关的信息。对于 OAuth,这通常意味着用户标识符(如 ID、电子邮件或用户名)和服务标识符(指示通过哪个站点或服务进行身份验证)。在应用程序的数据库外部的其他部分中,该服务标识符与用于从该服务检索相关用户标识符的方法配对,这就是执行身份验证的方式。对于 OpenID,我们采用相同的方法,只是身份验证方法更加通用(因为我们几乎总是可以执行完全相同的协议(protocol) - 除非我们使用不同的身份 URL,即我们的服务标识符)。

最后,我记录了哪些第三方身份与哪些本地身份配对。要生成这些记录,流程如下所示:

  • 用户首次使用第三方身份登录。首先创建本地身份记录,然后创建第三方身份记录,然后将它们配对。
  • 在控制面板中,用户可以通过登录第三方服务来链接帐户。 (这是如何工作的非常简单。)
  • 在用户无意中创建多个帐户的情况下,解决方案非常简单。当用户登录其中一个帐户时,他会登录到他之前用于登录网站的另一个帐户(通过上面的控制面板功能)。 Web 服务检测到此冲突(已登录用户的本地身份与链接到刚刚登录的第三方身份的本地身份不同),并提示用户进行帐户合并。

合并帐户就是合并本地身份的每个单独字段(这会因应用程序而异,如果您的本地身份记录中只有几个字段,则应该很容易),然后确保链接的第三个字段-各方身份与最终的本地身份相关联。

关于将多个用户帐户合并在一起的架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6666267/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com