2016-12-12 54 views
0

我正在製作我的第一個節點+快速應用程序,並且我正在使用調用外部API的npm模塊。節點快遞句柄來自外部api的授權令牌

我有一個表單登錄頁面,用戶輸入憑證,然後通過郵件(ajax客戶端,app.post服務器端)傳遞並用於進行初始api調用(使用npm模塊),它返回一個授權令牌。所有隨後的API調用(使用npm模塊)都是使用該令牌進行的。

我的問題是:什麼是()是處理該令牌的最佳方式?將它保存在一個變量/對象中並導出它,然後在需要令牌的js文件中要求它?使用會話(這可能是一個好主意,以避免要求用戶重新登錄)並將該令牌存儲在該會話中?

回答

0

我會建議你使用jsonwebtoken模塊生成令牌

現在,當用戶試圖登錄thensedn到服務器的用戶名/電子郵件和密碼如何使用它

  1. 檢查用戶憑證是否有效,然後使用jwt.sign方法生成包含userId(或任何用於唯一標識用戶的某個值)的令牌。
  2. 發送該令牌以響應登錄請求。

  3. 在客戶端收到令牌後,將其保存在某些服務中。

    使得對API的後續調用時令牌添加到請求(在每個API調用-client側)

  4. (我建議將其添加在Authorization頭這樣的授權承載(標記)。

    (在每個API調用 - 服務器端)

  5. 現在,當服務器獲取API請求將取回來自請求頭令牌和使用jwt.verify實現方法具檢查令牌的有效性d並且當請求通過令牌驗證階段時,您可以發送請求的數據作爲響應。

    注意:要添加令牌驗證階段,您可以使用express的中間件概念。要做到這一點,你可以創建一個單獨的驗證模塊,輸出一個調用的方法驗證,您可以使用jwt.verify,並要求驗證模塊,並把Auth.verify方法,中間件

+0

我不明白怎麼了在這裏使用jwt很有用。我需要存儲一個令牌,而不是從第一次調用時從外部API獲得的令牌。 – nip

+0

您有兩種選擇將您的令牌存儲在LocalStorage/SessionStorage(易受跨站點腳本攻擊(又稱XSS攻擊))或將其保存在Cookie中(易受Cross Site影響)。 我建議您將JWT存儲在用於Web應用程序的Cookie中,因爲它們提供了額外的安全性和靈活性,並且使用現代Web框架簡化了防止CSRF。 HTML5 Web存儲容易受到XSS攻擊,攻擊面積更大,並且可能會影響所有應用程序用戶的成功攻擊。 –