2

我的网站支持两种登录方式(类似于许多网站,包括 stackoverflow)。

  1. 注册您的电子邮件和密码,然后登录。
  2. 使用 Facebook 连接登录

所以我User上了一堂课(我正在使用 Ebean [JPA])。
当用户使用 facebook connect 登录时,我使用 facebook Graph API 提取基本信息。

现在,我应该区分(在数据库级别)这两种类型的用户吗?(例如,为 . 创建单独的表FacebookUser。我还听说过表继承。这是我的情况吗?)

这两种登录选项的最佳做法是什么?
我应该提一下,我希望在不久的将来使用 Google 帐户作为登录方式。

4

1 回答 1

1

我建议您使用users包含用户基本信息的表格,而不管注册机制如何(下面是一个准系统示例):

编号 | 姓名 | 电子邮件 | 创建日期

不同的服务将有不同的身份验证方法,因此为每个服务设置不同的表可能是个好主意:

auth_facebook:

编号 | facebook_id | 访问令牌 | ...

auth_网站:

编号 | 密码 | ...

等等。通常,为了方便起见,使用多个服务登录的能力,您可能希望以一种或另一种方式集中您的用户。还要记住,关于身份验证,您将在 users 表中拥有您的主 ID,但您将有不同的验证方法,具体取决于用户用于连接的服务。对于 Facebook,您可以在 auth 之后检查 facebook_id 并查看您的哪些用户登录了。上面的架构也允许您为用户提供连接其他服务,这可能会有所帮助。

一个特定的情况是,如果您拥有人们的基本个人资料,但您希望允许他们展示他们的 GitHub 存储库、SO 代表并允许他们同时与 Facebook 朋友联系。

表继承听起来有点矫枉过正,而且很可能在不同的数据库系统中实现不同。所有这些表的视图可能更合适。

于 2012-09-11T17:52:05.143 回答