2017-09-06 50 views
0

當我閱讀JWT的文檔時,我明白我們不需要使用會話來保存用戶數據,因爲它在請求頭中加密,而實際上JWT是無狀態的。當我想使JWT令牌無效時,JWT和會話cookie之間有什麼區別?

但我想刪除智威湯遜的道理,如果我的用戶是禁用..

在這種情況下,我JWK中間件,驗證令牌後,我得查詢我的MongoDB中,以檢查是否該用戶處於活動狀態或停用狀態。

所以它不是無狀態的,另一方面它是mongoDB的一個很大的重載,因爲mongoDB不是用於保存會話的好數據庫!所以我需要Redis ..如果我想使用Redis會話和cookie與JWT有什麼區別?

回答

0

正如您所提到的,JWT令牌可以攜帶任意用戶相關信息。通信保持無狀態,因爲服務器不記得先前請求期間該特定客戶端的狀態。您必須爲每個請求提供上下文,並以JWT令牌的形式進行。

只要上下文很小,就可以把它全部放在令牌中。當有很多上下文時,將它傳遞給每個請求可能不再是最優的。這是當你需要切換到在後端存儲狀態。

就此而言,JWT和cookie是在請求之間傳遞上下文的類似機制。當您必須決定是否應該使用後端會話存儲來減少每個請求中傳輸的數據的大小時,它們都受到大小限制。

+0

謝謝..你可以讀這個問題嗎?https://stackoverflow.com/questions/46069698/refresh-token-bug-in-jwt-method –