2012-09-11 78 views
2

我的網站啓用了兩種登錄方式(類似於很多網站,包括stackoverflow)。用戶註冊vs Facebook連接

  1. 註冊您的電子郵件和密碼,然後登錄。
  2. 登錄與Facebook連接

所以我做了User類(我使用Ebean [JPA])。
當用戶使用Facebook登錄連接時,我使用Facebook Graph API提取基本信息。

現在,我應該在兩種類型的用戶之間區分(在數據庫級別)嗎? (例如,用於FacebookUser創建單獨的表。我也聽說過表繼承。這是我的腳的情況?)

究竟是什麼兩種登錄選項的最佳做法?
我應該提到,我希望在不久的將來使用Google帳戶作爲登錄的方式。

回答

1

我建議你使用一個users表,其中包含有關用戶的基本信息,無論登記力學(下這是一個準系統的例子):

ID |名稱|電子郵件| DATE_CREATED

不同的業務會有不同的身份驗證方法,所以也許這是一個好主意,爲每個不同的表:

auth_facebook:

ID | facebook_id | access_token | ...

auth_website:

id |密碼| ...

依此類推。通常,使用多種服務登錄的能力是爲了方便,您可能希望以這種或那種方式集中用戶。請記住,關於身份驗證,您將在用戶表中擁有主ID,但根據用戶用於連接的服務,您將擁有不同的驗證方法。對於Facebook,您可以在auth後檢查facebook_id並查看您的哪些用戶已登錄。上面的模式允許您提供用戶連接其他服務,這可能會有所幫助。

一個特定的情況是,如果你有基本的人物配置文件,但你想讓他們炫耀他們的GitHub回購,SO代表,並允許他們同時與Facebook朋友連接。

表繼承聽起來像是過度殺傷,而且很可能在不同的數據庫系統中有不同的實現。所有這些表格的視圖可能更適合。