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

时间:2015-06-26 11:32:48

标签: database facebook authentication database-design google-plus

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

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

Database Schema

表"身份"将负责存储登录方法(Facebook,谷歌或我自己的登录系统)。用户可以拥有一个或多个"身份"。

在表格" identity",列"适配器"将存储身份验证方法(Facebook,谷歌,myapp)。 "哈希"列将存储身份验证方法的ID(对于Google或Facebook),或者如果它是我自己的应用程序身份验证方法的记录,那么" hash" colunm将存储用SHA1加密的用户注册密码。

我的问题是,例如:如何通过Facebook帐户检测用户是否正在通过Facebook帐户验证用户"用户"用另一种认证方法创建?因为我不想创建多个用户,同一个社交身份验证帐户所有者或我自己的应用帐户所有者。 我可以使用电子邮件列进行此操作吗?因此,我可以验证身份验证用户是否已经在" user"中注册了相同的电子邮件。表,如果有,那么我可以用同一个user_id创建一个标识?

1 个答案:

答案 0 :(得分:0)

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

我原本以为在创建之前应该存在用户身份的约束。否则,您可能会冒险将“身份”添加到数据库中,而根本没有连接用户。