接口的鑒權cookie、session和token


1、HTTP是無狀態協議

什么是無狀態?就是說這一次的請求和上一次的請求是沒有任何關系的,無法共享信息。好處就是速度快。

2、cookie、session的加入

HTTP請求是無狀態的,所以解決共享信息的問題必須采用其他的手段,於是就有了sessionid,sessionid是基於cookie實現的。服務器為每一個用戶生成一個不一樣的隨機字符串,每次向服務器發起HTTP請求時,都會把這個字符串傳給服務器,這樣就能區分用戶了。

3、session的缺點

對於客戶端來說session是非常好的,只需要cookie中存一個字符串就好了,但對於服務器來說,必須存儲所有在線用戶的session,那么這就占用了很大的資源(cpu,內存),嚴重影響服務器的性能。這時可以選擇去擴展服務器做集群,但是同時也出現了分布式session的問題,那么可以采用session粘滯或者session集中式管理(redis)來解決。

session原理圖:

純手工畫圖,不喜勿噴

 

 

4、cookie、session的區別

cookie:客戶端和服務端都能生成cookie,存放在客戶端。存放一些不敏感的數據,數據類型只能是字符串(json).

session:服務端生成session,存放在服務端。可以存放任意數據,Java中session中可以存放任意對象,session必須依賴cookie實現。

5、token 票據的意思,就是門票、令牌

token也是一個字符串,用戶輸入用戶名和密碼之后,向服務器發起請求,服務器會生成一個token串,token串是由header+userid+時間戳,在經過一個加密的算法,生成一個token字符串。

token驗證原理圖:(偷的圖,哈哈)

 

 

session和token的區別:

session:服務器生成、存儲、驗證,以cookie的方式傳給客戶端,客戶端以同樣的方式發送給服務端。session有狀態。

token:服務器生成、驗證,以cookie或者請求頭的形式傳給客戶端,客戶端以同樣的方式發送給服務器,token無狀態。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM