1、為什么要使用session
因為http本身是無狀態協議,無法確定你的本次請求和上次請求是不是你發送的。如果要進行類似論壇登陸相關的操作,就實現不了了。
2、Session 生成方式
瀏覽器第一次訪問服務器,服務器會創建一個session,然后同時為該session生成一個唯一的會話的key,也就是sessionid,然后,將sessionid及對應的session分別作為key和value保存到緩存中,也可以持久化到數據庫中,然后服務器再把sessionid,以cookie的形式發送給客戶端。這樣瀏覽器下次再訪問時,會直接帶着cookie中的sessionid。然后服務器根據sessionid找到對應的session進行匹配;
1、為什么要使用token
token在服務器是可以不需要存儲用戶的信息的,而token的傳遞方式也不限於cookie傳遞,可以保存在響應報文或者請求報文的報文頭部中
2、token的生成方式
瀏覽器第一次訪問服務器,根據傳過來的唯一標識userId,服務端會通過一些算法,如常用的HMAC-SHA256算法,然后加一個密鑰,生成一個token,然后通過BASE64編碼一下之后將這個token發送給客戶端;客戶端將token保存起來,下次請求時,帶着token,服務器收到請求后,然后會用相同的算法和密鑰去驗證token,如果通過,執行業務操作,不通過,返回不通過信息;
區別
Session 需要保存在服務器端,
Token 不需要保存在服務器端
