2015-01-14 80 views
0

我想在我的expressjs,nodejs和angularjs應用程序中使用jsonwebtoken和express-jwt爲我的用戶身份驗證實現json Web令牌。我閱讀了各種文章和教程,現在我對某事有些困惑。如何在瀏覽器關閉後記住用戶使用jwt?

什麼,我明白那智威湯遜首先是它是由按週期分開三個部分組成:

  1. 標題:介紹了智威湯遜和算法。
  2. 有效載荷:包含的信息:發行人,觀衆,到期
  3. 簽名:簽名基於頭部和有效載荷

所以每次請求與令牌,這在服務器驗證發。根據this文章,發行人是提出請求的人。在用戶認證的情況下,用戶是發行者。現在,使用express-jwt中間件,驗證在請求報頭中的標記並附加解碼令牌req.user:

app.use(expressJwt({ secret: jwtSecret }).unless({ path: [ '/login' ]})); 

多久可以是有效載荷的長度?我如何以及在哪裏將令牌保存在客戶端,所以即使在瀏覽器關閉後,我的會話仍然存在,除非用戶註銷,如Facebook的「保持登錄狀態」?因爲我不想讓用戶再次登錄,如果令牌過期,我希望令牌更新,除非用戶註銷。

回答

2

您可以將JWT存儲在持久性cookie或browser local storage中。有效負載的長度不受JWT本身的限制,而受存儲的限制。請記住,長記號可能會給您的請求增加重要的負載,或者可能需要額外的服務器配置才能允許超長的HTTP標頭。

如果您不希望JWT令牌過期,請在發出它們時相應地設置到期時間。如果JWT由於用戶無法撤銷而泄漏,則這會增加安全風險。

+0

我希望智威湯遜堅持不懈。因爲我不想提示用戶登錄,除非他退出系統。瀏覽器關閉後jwt是否會被銷燬,如果我們將它存儲在localStorage中? – Pravin

+0

正如w3schools頁面所述:HTML本地存儲提供了兩個對象用於在客戶端存儲數據:(1)window.localStorage - 存儲沒有過期日期的數據和(2)window.sessionStorage - 存儲一個會話的數據(數據是當標籤關閉時丟失)。所以 - 是的,當瀏覽器窗口關閉時localStorage不會丟失。 –

+0

哦好吧...謝謝... – Pravin

相關問題