8

我們正在開發SPA - 完整的客戶端基礎JavaScript應用程序,並且需要對我們的用戶進行身份驗證才能訪問內部。登錄單個頁面使用Google身份驗證和Google Oauth 2.0的應用程序

正如我從搜索中發現的,我們可以外包我們的身份驗證機制,並使用Google帳號。我從這個網站了解到 https://developers.google.com/accounts/docs/OAuth2Login - 如何處理Google API和認證機制

在短字,我們需要:

  • 發送請求到谷歌網址使用參數要求用戶允許SPA使用來自谷歌
  • 他們的個人資料
  • 在成功的情況下,我們得到一個令牌
  • 我們可以使用此令牌訪問我們被問及的API並使用它。

這是描述得很好,我理解它,並有一些JS代碼來實現它。

我不明白

我有一個應用程序與它的私人數據。我希望使用用戶的電子郵件作爲登錄名或用戶標識(無論如何調用它)訪問應用程序的內部信息,例如用戶創建的任務,用戶配置文件等。因此,要在我的SPA中顯示用戶創建的任務我需要用用戶的電子郵件查詢數據庫。

我想象中的未來場景:

  • 用戶點擊Login with Google按鈕
  • 我們獲得令牌 - 這意味着用戶已成功驗證
  • 我們保持用戶和他的電子郵件與SPA合作
  • 當用戶點擊Logout我們清除所有訪問數據

我應該在哪裏堅持這些數據?

Forms Authentication情況下,我明白,我們通過登錄/密碼到服務器,如果他們匹配數據庫中,我們創建Forms Ticket和餅乾店呢。

有沒有類似的情況與谷歌的身份驗證?如果我將用戶的電子郵件存儲在cookie中,我認爲這從安全原因來說不是很好。如果我要保存一個令牌 - 我不確定爲什麼我需要它,以及如何在我的SPA中使用它,我沒有在驗證後使用任何Google API。

您是否有任何示例案例,我們如何在類似案例中構建流程?

謝謝。

+0

僅供參考用戶ID和用戶電子郵件在一個重要方面是不同的;用戶可以更改他們的電子郵件地址,並且該用戶的ID將保持不變。 –

+0

在這種特殊情況下,我們不會更改公司網絡內的電子郵件。總的來說,我試圖解釋,我會先使用還是使用第二種方法,但接下來我應該做什麼並不重要。如果ID - 好,我們將用戶的ID保存在數據庫中,並通過ID查詢,如果是電子郵件 - 也可以。順便說一句,我怎麼能改變谷歌電子郵件?它甚至有可能嗎? –

+1

http://support.google.com/accounts/bin/answer.py?hl=zh_CN&answer=19870 –

回答

5

如果您只需要用戶的電子郵件地址,那麼最好使用OpenID而不是OAuth。 OAuth提供對用戶帳戶和服務的訪問權限,範圍爲特定資源或資源集。 OpendID僅用於登錄第三方服務。然後您可以從OpenID登錄中提取用戶的標識和電子郵件地址。注意:ID將始終發送,但在驗證過程中必須明確請求電子郵件地址。

Google還支持混合OpenID + OAuth方案,該方案可讓您在OpenID登錄名之上捎帶OAuth請求,前提是您需要對某些資源進行身份驗證。 Take a look at the authentication document to get an idea of how both protocols work and which is better for your scenario.

返回電子郵件地址後,您可能不應將其保存在cookie中。通常推薦的處理方法是將其添加爲會話參數。這樣,只有會話cookie存儲在客戶端上,服務器可以使用它查找它需要的值。 This answer has a good explanation of the differences and when you want to use sessions versus cookies.

相關問題