2009-08-25 19 views
5

我對OpenId相當陌生,在完成身份驗證後,我對理解如何使用OpenId存在一些問題。用openId開發網站的最佳實踐 - 用戶表?

我正在創建一個新網站,並且在獲得openId身份驗證方面沒有任何問題。但我不確定一旦用戶登錄後應如何存儲用戶相關數據。

在openId之前,我將擁有自己的註冊過程,具有唯一UserId(整數)的UserTable和涉及所有其他表與某些用戶活動相關的數據將只有一個標識用戶的UserId列。

我現在應該在我的表中使用OpenId ID嗎?我應該創建一個非常簡單的OpenId-> UserId表,每個登錄名都映射到並具有以前存儲的數據嗎?當用戶想要使用不同的OpenId提供者時會發生什麼?

回答

6

我建議你將用戶ID映射到OpenID,只是因爲它有一定的合理性 - 這是一個很好的做法,允許人們有一個以上的OpenID身份綁定到帳戶。

+0

所以我想,當用戶通過驗證後,我應該檢查我的用戶表,看看如果OpenID存在,如果不創建一個新的行... 但是你(以安全的方式)如何讓人們將多個OpenId映射到現有的userId? – Bjorn 2009-08-25 08:50:18

+0

是的,實際上,如果用戶帶有一個未知的'OpenID',最好問問用戶是要創建一個新帳戶還是將它綁定到現有帳戶(在後一種情況下,用戶必須使用其他OpenID)。 至於安全的OpenID管理方式 - 或多或少是UI的東西。其中一種解決方案是在成功的「OpenID」往返(或未經請求的身份斷言)之後要求確認。另一種方法是使用特殊的隨機數或cookie來往返。無論你能想出什麼。 – 2009-08-25 08:54:54

3

我用我的網站兩個表:

1)用戶 - 存儲用戶配置文件信息

2)憑據 - 存儲用戶的登錄信息。憑證可能會有所不同:{email,password/hash},openID等

2

Yahoo OpenID FAQ http://developer.yahoo.com/openid/faq.html與Plaxo的Joseph Smarr創建的配方有很好的聯繫,詳細介紹了將OpenID添加到網站已經有用戶,包括數據庫表結構:

http://www.plaxo.com/api/openid_recipe

這對於已經有用戶 賬戶的web站點上實現OpenID的 消費端支持一步一步的教程指南。它將解釋如何輕鬆地讓新用戶使用他們的OpenID網址註冊您網站上的 帳戶,以及如何讓現有的 用戶附加他們的OpenID以便他們可以使用它們登錄。