3

如果您想让您的站点用户能够使用 Facebook Connect、Google 帐户等登录,您如何设计数据库以使它们全部集成?

4

3 回答 3

2

我建议使用 Accounts 表来保存您的本地帐户数据,然后这些数据将与 AthenticationMethods 表或 Credentials 表相关,您将在其中保存相关的外部身份验证详细信息。这允许您的站点及其所有复杂性与帐户和您的登录过程相关,从而很好地抽象出您可能想要支持的各种形式的身份验证。鉴于每种身份验证方法可能具有不同级别的复杂性,我建议查看各种 API 并交叉引用它们以找到共同的相似之处。更重要的是,您需要找到它们不同的地方,以便您的凭证表可以处理每个 API 可能需要的各种数据位。不要忘记包含 OpenID!

于 2009-06-24T00:16:40.200 回答
0

您确定要存储除 "login":"password" 以外的其他信息吗?我建议你有一个枚举来保存用户来自哪个登录系统。

于 2009-08-12T13:25:58.120 回答
0

我使用本地帐户或用户表中的两个字段。一种称为“externalSystemId”(TINYINT),另一种称为“externalId”(DOUBLE)。我有一些定义各种 externalSystemId 值的代码常量,即。EXTERNAL_SYSTEM_FACEBOOK = 1、EXTERNAL_SYSTEM_OPENID = 2 等等。 externalId 当然是来自该系统的用户 ID。

在我的代码中处理用户对象时,我可以轻松地确定用户来自哪个系统,并根据 externalSystemId 加载适当的代码机制来验证或显示适合系统的内容。

请注意,您可能希望使用数据库表来存储外部系统的记录,而不是代码常量,这取决于您要处理的数量以及是否需要有关系统的大量额外信息。

于 2009-06-24T00:31:29.220 回答