2009-11-27 31 views
3

我有一個帶有用戶模型的Rails應用程序。我希望允許用戶使用少數服務登錄。有兩種方法可以將其存儲在數據庫中,但我不確定哪種方法最好。我應該注意到,我希望用戶能夠連接多個服務並鏈接帳戶。在向用戶模型添加開放式授權登錄時,表結構應該是什麼樣子

方法1: 對於每個服務,添加令牌/祕密字段到用戶表。這似乎有點問題,因爲如果我想存儲,例如,Twitter令牌,Twitter密碼,twitter屏幕名稱和twitter個人資料img?我可以看到用戶表有很多未使用的列。我可能會在每項服務中存儲額外的信息。這將是這個樣子:

id 
twitter_token 
twitter_screenname 
twitter_secret 
twitter_pic 
facebook_token 
facebook_secret 
facebook_pic 
facebook_name 
google_token 
google_secret 
google_name 
etc. 

方法2:
或者每個用戶可以有許多社會登錄和各社會登錄屬於一個用戶。然後,我會看起來像

user_id 
token 
secret 
social_type # foreign key to a social_site look up table 
social_pic 

和一張桌子的社會型表看起來是這樣的:

id 
social_site_name 
oauth_url 

這種方法唯一的缺點是,我概括我將存儲關於所有服務。你們怎麼做?也許STI是爲了這裏...在哪裏會有一個從基本登錄類繼承的每種類型登錄的類。

謝謝!

回答

9

我建議是這樣的:

  • 每個用戶可以有很多登錄,每個登錄屬於一個用戶只。
  • 登錄是特定類型,一個登錄是一個類型只的。
  • SocialLogin表有共同所有登錄類型GoogleFaceBookTwitter表有具體到每一個字段的字段。

login_model_01

+0

你是怎麼做的圖?這是非常好的。 – justinhj 2009-11-27 19:12:51

+0

圖片+1。 – BalusC 2009-11-27 19:13:41

+0

@Justinhj; Visio pro – 2009-11-27 19:38:28

相關問題