用于多个身份验证的数据库架构,Facebook Connect,Twitter,OpenID等

Ric*_*ard 19 openid twitter database-design facebook

我正在构建一个我想与Facebook Connect,Twitter,OpenID以及其他社交网络进行交互的应用程序.用户可以同时使用任意数量的这些方法登录.我的应用程序使用MySQL作为后端数据库.

有人可以给我指导我的数据库模式应该是什么样的同时从各种社交网络捕获用户信息?我有一个想法(根据我的在线阅读)是这样的:

用户{userid,...}
UserFacebook {fbid,userid,...}
UserTwitter(twid,userid,...}
等等.

然后,为了获得用户的完整图片,我将加入所有用户表.是其他网站如何做到这一点还是有更聪明/更好的方式?

Oma*_*Ali 8

我建议您在两个表中使用User模式:Users和Identities.身份应具有:Id,用户ID,适配器,哈希.

对于用户名/密码认证适配器,Hash将是哈希(例如MD5/SHA1)密码,而其他适配器(Facebook,Twitter等)将是Auth Provider提供的令牌.

祝好运.

  • 人们从字面上看例子。 (2认同)

Yeh*_*lam 0

这就是我所做的,我将帐户表与身份验证过程分开,例如帐户保存帐户名、注册日期和可能的唯一 ID。然后我可以创建 4 个附加表,例如:users_openid、users_facebook、users_twitter 和 users(用于正常的用户名/网站身份验证),它们都有一个链接到帐户表的外键 (account_id)。

这样您就可以将用户登录系统的方式与实际帐户分开。

  • 将用户分散到四个表中绝对是一个坏主意。 (2认同)