首頁常見問題正文

token是什么?token的認證流程

更新時間:2023-09-20 來源:黑馬程序員 瀏覽量:

IT培訓班

token也可以稱做令牌,一般由uid+time+sign(簽名)+[固定參數(shù)] 組成。token組成各部分釋義如下:

uid: 用戶唯一身份標識

time: 當前時間的時間戳

sign: 簽名, 使用 hash/encrypt 壓縮成定長的十六進制字符串,以防止第三方惡意拼接。

固定參數(shù)(可選): 將一些常用的固定參數(shù)加入到 token 中是為了避免重復查庫。

token在客戶端一般存放于localStorage,cookie,或sessionStorage中。在服務器一般存于數(shù)據(jù)庫中。

token的認證流程:

用戶登錄,成功后服務器返回Token給客戶端。

客戶端收到數(shù)據(jù)后保存在客戶端。

客戶端再次訪問服務器,將token放入headers中 或者每次的請求 參數(shù)中。

服務器端采用filter過濾器校驗。校驗成功則返回請求數(shù)據(jù),校驗失敗則返回錯誤碼。

token可以抵抗csrf,cookie+session不行。

session時有狀態(tài)的,一般存于服務器內(nèi)存或硬盤中,當服務器采用分布式或集群時,session就會面對負載均衡問題。負載均衡多服務器的情況,不好確認當前用戶是否登錄,因為多服務器不共享session。

客戶端登陸傳遞信息給服務端,服務端收到后把用戶信息加密(token)傳給客戶端,客戶端將token存放于localStroage等容器中。客戶端每次訪問都傳遞token,服務端解密token,就知道這個用戶是誰了。通過cpu加解密,服務端就不需要存儲session占用存儲空間,就很好的解決負載均衡多服務器的問題了。這個方法叫做JWT(Json Web Token)。


分享到:
在線咨詢 我要報名
和我們在線交談!