一篇文章弄懂cookie、session和token

許佳佳233發表於2018-11-05

概念

cookie

cookie儲存在客戶端,HTTP是無狀態的,HTTP每次發出的時候會附上該域名下的cookie,從而可以給HTTP附上狀態,最常見的就是登入態。

session和token

session和token算是一類的,他們是兩種不同的伺服器的驗證方式。
通俗來說,cookie會存一個value在客戶端本地,然後將value附到HTTP上發給伺服器,那麼伺服器是怎麼通過這個value來判斷使用者是否是登入態的呢?這就是session和token做的事情。

session過程

請求過程:
1、客戶端向伺服器請求,傳送使用者名稱和密碼
2、伺服器生成sessionId,繫結使用者資料儲存在資料庫
3、伺服器返回sessionId給客戶端
4、客戶端用cookie儲存sessionId,以後的請求都帶上這個sessionId
5、伺服器如果收到這個sessionId,那麼就去資料庫查詢使用者資料,如果找到了說明驗證通過
6、伺服器把驗證結果返回客戶端
在這裡插入圖片描述

token過程

請求過程:
1、客戶端向伺服器請求,傳送使用者名稱和密碼
2、伺服器根據使用者資訊通過加密生成token,使用者資訊包括賬號,token過期時間等,具體由伺服器自定義。
3、伺服器返回token給客戶端
4、客戶端用cookie儲存token,以後的請求都帶上這個token
5、伺服器把token解密,確認使用者資訊是否正確,如經過正確就說明驗證通過。
6、伺服器把驗證結果返回客戶端
在這裡插入圖片描述

上圖轉載自:https://www.cnblogs.com/hwlong/p/9224251.html

session、token優劣

session

由於sessionId和使用者資訊相互繫結的資料庫存在伺服器,所以伺服器可以隨時讓傳送出去的一個sessionId失效。這是保障安全的一種重要手段。

token

token的好處是比session更省空間和時間,伺服器不需要去管理sessionId和使用者資訊的資料庫,伺服器收到token直接解密就可以驗證,不需要去資料庫查詢驗證。
但是token傳送出去之後,就只能等待它達到過期時間後才會失效,後臺無法對其進行控制。

相關文章