我想完成与this question几乎相同的事情,qazxswpoi用于存储来自多个来源(Facebook,Twitter,我自己的应用程序等)的身份验证数据,以便一个人可以从任何/所有提到的提供商登录他们的帐户。
接下来,我发布了我创建的两个表的截图。
表“身份”将负责存储登录方法(Facebook,Google或我自己的登录系统)。用户可以拥有一个或多个“身份”。
在“身份”表中,“适配器”列将存储身份验证方法(facebook,google,myapp)。 “哈希”列将存储身份验证方法的ID(对于Google或Facebook),或者如果它是我自己的应用程序身份验证方法的记录,则“哈希”列将存储使用SHA1加密的用户注册密码。
我的问题是,例如:我如何检测用户巫婆是否通过Facebook帐户进行身份验证是否已经使用其他身份验证方法创建了“用户”?因为我不想创建多个用户,同一个社交身份验证帐户所有者或我自己的应用帐户所有者。我可以使用电子邮件列进行此操作吗?因此,我可以验证身份验证用户是否已在“用户”表中注册了相同的电子邮件,如果有,则可以使用此相同的user_id创建身份?
如果可能,我建议您在添加身份标识之前添加用户。在创建用户之前检查是否存在匹配的电子邮件,然后添加新标识。
我原以为应该在创建之前对用户存在的身份进行约束。否则,您可能会冒险将“身份”添加到数据库中而根本没有连接用户。