Facebook、Google 和我自己的身份验证的数据库模式
Posted
技术标签:
【中文标题】Facebook、Google 和我自己的身份验证的数据库模式【英文标题】:Database schema for Facebook, Google and my own authentication 【发布时间】:2015-09-13 08:19:12 【问题描述】:我想完成与this question 几乎相同的事情,即存储来自多个来源(Facebook、Twitter、我自己的应用程序等)的身份验证数据,以便一个人可以从任何/所有提到的提供者。
接下来,我发布了我创建的两个表的屏幕截图。
“身份”表将负责存储登录方法(Facebook、Google 或我自己的登录系统)。一个用户可以拥有一个或多个“身份”。
在“身份”表中,“适配器”列将存储身份验证方法(facebook、google、myapp)。 “hash”列将存储身份验证方法的ID(对于Google或Facebook),或者如果它是我自己的应用程序身份验证方法的记录,“hash”列将存储使用SHA1加密的用户注册密码。
我的问题是,例如:我如何检测用户女巫是否通过 Facebook 帐户进行身份验证,是否还没有使用另一种身份验证方法创建的“用户”?因为我不想为同一个社交身份验证帐户所有者或我自己的应用程序帐户所有者创建多个用户。 我可以使用电子邮件栏解决这个问题吗?所以我可以验证身份验证用户是否已经在“用户”表中注册了相同的电子邮件,如果他有,那么我可以使用相同的 user_id 创建一个身份?
【问题讨论】:
请注意,不应使用 SHA1(或任何 SHA)来存储密码。它们不安全。检查此SO answer 以获得更好的选择。 【参考方案1】:如果可能,我建议您在添加身份 ID 之前添加用户。 在创建用户之前检查是否存在匹配的电子邮件,然后添加新身份。
我原以为应该对用户在创建之前存在的身份进行限制。否则,您可能会在根本没有连接用户的情况下将“身份”添加到数据库中。
【讨论】:
以上是关于Facebook、Google 和我自己的身份验证的数据库模式的主要内容,如果未能解决你的问题,请参考以下文章
Firebase 身份验证中的用户 ID 如何在所有身份验证提供程序(Google、Facebook、Github)中都相同?
如何使用颤振在 django 中进行 google、facebook 身份验证
iOS Swift Facebook 身份验证与 Google Firebase - 如何获取额外权限?
ASP.net core web api:使用 Facebook/Google OAuth 访问令牌进行身份验证
如何从 facebook/google/... oauth2 身份验证在 Spring (Boot) 中为单页应用程序派生自定义登录令牌?