2010-11-01 77 views
0

我正在尋找一些關於實現支持多種登錄方法的應用程序的策略建議。建議在Web應用程序中使用多種登錄方法

事實上,我已經有大部分工作。在我的應用程序中,我允許用戶使用傳統方法註冊和登錄:由我管理的帳戶,我提供所有用戶管理功能,例如登錄,註銷,註冊,激活電子郵件,重置密碼,密碼更改,編輯電子郵件地址等。

但是,用戶也可以使用他們的Twitter帳戶註冊並登錄。系統將讓用戶在Twitter上進行身份驗證並授權我的應用程序訪問其帳戶,然後Twitter將重定向到我的應用程序,並且我將獲得Twitter用戶名。目前,如果我不知道該用戶名,我會在我的數據庫中創建它。如果我知道,但它是一個不同的帳戶類型(本地帳戶),我會拋出一個錯誤。

基本上,當前用戶必須在創建帳戶時選擇一種登錄方法並堅持下去。有兩種方法,我可以看到改善的情況:

允許多個登入方法

用戶將有一個帳戶,但在登入的多種方式讓我們假設用戶有一個名爲「本地帳戶。 joedirt「,與電子郵件地址」[email protected]「相關聯。接下來,該用戶不使用本地方法登錄,而是選擇Twitter方式。在Twitter上,他也被稱爲「joedirt」。

這裏的問題是,從Twitter我只得到他的用戶名。如果僅通過名稱匹配我可以登錄到本地帳戶,這將是一個主要的安全漏洞。

我在這裏做什麼?詢問用戶使用其他方法登錄他的電子郵件地址?這將是確保這涉及同一用戶的唯一方法,對嗎?

只允許一個登入方法,但要選擇一個在任何時間的能力

另一種方法可以讓用戶一次只能使用一個登入方法,但該選項來設置此作爲首選項,並在帳戶創建後更改。兩種方案可以展開:

  • 從本地登入方法第三方登入方法。由於我無法從第三方登錄中獲取電子郵件地址,我將如何將本地帳戶鏈接到第三方帳戶?同樣,用戶名匹配太弱,對吧?
  • 從第三方登錄方法到本地方法。一個不太可能的事件,我是否應該支持?

對不起,長話短說。我對最好的方法是什麼以及每種情況會產生什麼後果都有一點心理障礙。

回答

1

如何讓用戶在她已登錄時將其帳戶「鏈接」到其他登錄方法?這樣,如果第三方供應商僅提供有限的信息(例如Twitter用戶名),則這不會成爲問題。

無論哪種方式,我建議你爲每個用戶生成一個唯一的本地ID,而不是在本地用戶名與第三方dito相沖突時拋出錯誤。將用戶和她的登錄方法視爲不同(但相關)的概念。

+0

謝謝,我的確很深,所以我需要一個清晰,簡單的答案。我認爲在登錄時允許連接其他帳戶是非常有意義的。它是安全的,允許提供者之間的名稱變化,並且不難實現。 – Ferdy 2010-11-02 09:25:42