我已經閱讀了很多關于這個話題的資料,但是沒有找到我想要的一個好的答案。
所以我對JWT與Session的利弊的理解是
JWT與Session的利弊
JWT 優點
- 更具可擴展性,因為在服務器端沒有DB查詢。(假設JWT是無狀態的) 。
con
- 在客戶端存盤令牌。
- 在客戶端存盤令牌需要經過深思熟慮。(與本地存盤相比,使用httpOnly的cookie更為可取,但cookie有4kb的大小限制)
- 不能立即撤銷。
- 不能立即撤銷 。
- 權限可能會過時,直到下一次重繪 。
會話 pro
con
所以鑒于我的理解,
支持大量用戶的網站(亞馬遜、uber)使用哪種方法?使用會話和分布式快取是否足夠好?
在現實生活中,什么情況下使用 JWT(基于令牌)比基于會話更有意義?
謝謝你!
uj5u.com熱心網友回復:
JWTs從未被設計用于處理會話。它們是一種在服務之間交換完整性保護的訊息的方式。請看這篇文章。http://cryto.net/~joepie91/blog/2016/06/13/stop-using-jwt-for-sessions/這篇文章解釋了為什么使用JWTs來處理會話并不是一個好主意。
您還可以閱讀有關BFF模式的內容。https://curity.io/resources/learn/the-bff-pattern/,其中您使用輕量級的后端組件來處理令牌,而在前端仍然只處理會話。因為它是一個輕量級的組件,所以很容易對其進行擴展,例如,它可以是一個lambda函式。
因此,在我看來,沒有真正好的用例讓你真正喜歡基于JWT的會話而不是基于cookie的會話,但是(如同任何強烈的意見),這可能會引發討論;)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/312418.html
標籤:
下一篇:如何保持兩個表的同步性
