Facebook、Google 和我自己的身份验证的数据库架构

Thy*_*ity 5 database authentication database-design facebook google-plus

我想完成与这个问题几乎相同的事情,即存储来自多个来源(Facebook、Twitter、我自己的应用程序等)的身份验证数据,以便一个人可以从任何/所有提到的帐户登录到他们的帐户提供商。

接下来,我发布了我创建的两个表的屏幕截图。

数据库架构

表“identity”将负责存储登录方法(Facebook、Google 或我自己的登录系统)。一个用户可以拥有一个或多个“身份”。

在“身份”表中,“适配器”列将存储身份验证方法(facebook、google、myapp)。“hash”列将存储身份验证方法的ID(对于Google或Facebook),或者如果它是我自己的应用程序身份验证方法的记录,“hash”列将存储使用SHA1加密的用户注册密码。

例如,我的问题是:如何检测通过 Facebook 帐户进行身份验证的用户是否还没有使用其他身份验证方法创建的“用户”?因为我不想为同一个社交身份验证帐户所有者或我自己的应用程序帐户所有者创建多个用户。我可以使用电子邮件栏来解决这个问题吗?因此,我可以验证身份验证用户是否已经在“用户”表中注册了相同的电子邮件,如果有,那么我可以使用相同的 user_id 创建一个身份吗?

小智 0

如果可能的话,我建议您在添加身份 ID 之前添加用户。在创建用户之前检查是否存在匹配的电子邮件,然后添加新身份。

我本以为应该对用户在创建之前存在的身份进行限制。否则,您可能会在根本没有连接用户的情况下将“身份”添加到数据库中。