2015-04-24 37 views
1

作爲背景,我使用的是Google OAuth2 NodeJS客戶端,但我認爲我的問題更加抽象/獨立於技術。單頁應用程序的服務器應該如何處理oAuth令牌?

我的網站是通過AJAX與服務器通信的單頁應用程序。

當用戶第一次訪問我的網站時,我會執行OAuth2流程,將其重定向到Google以登錄,然後使用訪問令牌重定向回我的網站。我將這個訪問令牌存儲在一個cookie中,並使用它來處理通過AJAX對服務器進行的各種調用。

我的挑戰是我不確定在access_token過期時該怎麼做。我是否應該將refresh_token存儲在cookie中,並使用它,或者是否存在安全問題?

我應該重定向瀏覽器以再次執行登錄流程嗎?這對於單頁面應用程序來說似乎相當難看。

回答

1

您可以通過js在後臺執行OAuth2流程(如使用彈出窗口的登錄流程),並且如果您的應用程序ID沒有被撤銷,那麼用戶不應該看到任何關於它的任何信息。雖然您可以在用戶電子郵件上設置提示進行身份驗證,但這可能不起作用。 您提到的另一種方式是刷新令牌,您可以使用它來請求新的訪問令牌,而無需用戶交互。也許這會是更好的主意,但請記住,如果您將access type設置爲離線,則只會獲得刷新令牌。

相關問題