第一次聽老大分享這個,我是懵逼的,查了下阮大大有相關文章,記錄下本身的簡單理解 看完文章誤覺得,JWT競標CAS,其實否則;html
背景:web
傳統的認證:算法
一、用戶向服務器發送用戶名和密碼。
二、服務器驗證經過後,在當前對話(session)裏面保存相關數據,好比用戶角色、登陸時間等等。
三、服務器向用戶返回一個 session_id,寫入用戶的 Cookie。
四、用戶隨後的每一次請求,都會經過 Cookie,將 session_id 傳回服務器。
五、服務器收到 session_id,找到前期保存的數據,由此得知用戶的身份。
複製代碼
JWT是一種將用戶信息存儲於客戶端,替代session的方案,主要解決的問題是高併發,那是如何作到userInfo不被篡改的呢?這時候Signature出場了~json
用戶login => JWT服務給客戶端種下JWT => 調API帶着JWT => 服務端驗證信息bash
jwt由3部分組成,HEADER、PAYLOAD、SIGNATURE服務器
那麼JWT的缺點是什麼呢?session
更改userInfo,可經過設置expired-time實現,那麼時間設置的長短如何肯定呢?時間過短,成本較大;時間太長,userInfo更新不及時;併發
推薦文章:八幅漫畫理解使用 JWT設計的單點登陸系統高併發