token cookie session的區別

token cookie session的區別

大家好,我是酷酷的韓~
在這裏插入圖片描述
一.Cookie簡介

cookie是一個非常具體的東西,指的是瀏覽器裏能永久存儲的一種數據,僅僅是瀏覽器實現的一種數據存儲功能。cokkie由服務器生成,發送給瀏覽器,瀏覽器把cookie以kv形式保存到某個目錄下的文本文件內,下一次請求同一網站時會把該cookie發送給服務器,由於cookie是存儲在客戶端的,所以瀏覽器加入了一些限制確保cookie不會被惡意使用,同時不會佔用太多磁盤空間,所以每個域的cookie數量是有限的。

二.Session

session從字面上講,就是會話,比如談戀愛,你怎麼知道這個女生就是自己的女朋友呢,肯定是有某種特徵。session類似的道理,服務器要知道當前發請求給自己的是誰。爲了區分, 服務器給客戶端分配不同的’身份標誌’客戶端每次向服務器發送請求時都帶着標誌,服務器就知道請求來自誰了。
保存方式,大多采用cookie方式。
服務器使用session把用戶的信息臨時保存在了服務器上,用戶離開網站後session會被摧毀,這種用戶信息存儲方式相對cookie更安全。
有一個缺陷:如果做了負載均衡,下一個操作請求到另一臺服務器時 session會丟失。

三.Token

1.引入:

token是在客戶端頻繁像服務器端請求數據,服務端頻繁的查數據庫,查詢用戶名密碼進行比對,判斷是否正確,並作出相應的提示,在此背景下,token便來了~

2.定義:

token是服務端生成的一串字符串,以做客戶端進行請求的一個令牌,第一次登陸後,服務器生成token並將token返回給客戶端進行存儲,以後客戶端只需要帶着這個token進行請求數據,不需要帶上用戶名密碼等。最簡單的token組成:uuid,time(當前時間戳),sign(簽名,token前幾位+鹽以哈希算法)

3.目的:

減少數據庫查詢,減輕服務器壓力。

4.流程:

1.客戶端使用用戶名和密碼登錄
2.服務端收到請求後,驗證用戶名和密碼,驗證成功後,服務端返回一個token返回給客戶端。
3.客戶端收到token,存儲起來,cookie或localstorage裏
4.客戶端每次像服務器請求時帶着token
5.服務端接收請求後,驗證token,驗證成功,就返回給客戶端數據。
6.我這裏是在登錄時生成token後存入redis,內容爲用戶的重要信息,並加密,每次請求帶着token。

四.三者的區別:
1.cookie和session的區別:

(1)cookie數據放在客戶端上, session數據放在服務器上。
(2)cookie不是很安全,容易被發現,進行惡意操作。此時session佔優
(3)session會再一定時間內保存在服務器上,訪問增多高併發時,會比較佔用服務保存器性能, 此時cookie佔優。
(4)單個cookie保存的數據不能超過4k,很多瀏覽器都限制一個站點最多 保存20個cookie
(5)登錄等重要信息存入session,其他信息如果需要保留,可以放入cookie

2.session和token的區別:

(1)作爲身份認證,token安全性比session好,因爲每個請求都有簽名,還能防止監聽以及重放攻擊,session必須靠鏈路層來保障通訊安全、
(2)session是一種http存儲機制,爲無狀態的http提供持久機制。只是簡單的把user信息存儲到session裏,因爲sid的不可預測性,暫時認爲是安全的。
(3)token提供的是認證和授權,token是唯一的,適用於第三方共享。

3.token和cookie的區別:

(1)token和cookie一樣都是首次登陸時,由服務器下發,都是當交互時進行校驗的功能,都是爲無狀態的HTTP提供持久機制
(2)token存在哪都行,localstorage或者cookie
(3)token只需要告訴服務器它是誰就可以。
(4)token不需要去查你是誰,不要保存會話,當用戶退出的時候,cookie和服務器的session都會註銷,token只需要註銷瀏覽器信息。
(5)token由於服務器不存儲會話,所以可擴展性強,token還可用於app中。

無論什麼時候,做什麼事情,要思考。------酷酷的韓

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章