session和token檢驗(yàn)的區(qū)別
都是 登陸狀態(tài)校驗(yàn)的一種實(shí)現(xiàn)方式
1)session機(jī)制
---頁面提交 用戶名,密碼 登錄
---后端驗(yàn)證通過,代表登錄成功
---在服務(wù)器保存登錄用戶信息,稱之為session數(shù)據(jù),并將sessionID響應(yīng)給客戶端
? ?補(bǔ)充:
? ? 一般通過cookie機(jī)制(響應(yīng)頭--header中),進(jìn)行保存和傳遞,
? ? 瀏覽器會(huì)自動(dòng)保存,
? ? web系統(tǒng),session最常見
---登陸后的每次請求將攜帶cookie
服務(wù)器提取cookie中的sessionID 和后端保存的信息進(jìn)行比對
2)token令牌校驗(yàn)機(jī)制
---頁面提交 用戶名,密碼 登錄
---后端驗(yàn)證通過,代表登錄成功
---在服務(wù)器不需要保存登錄用戶信息,只需要生成一個(gè)token令牌(特殊的字符串),返回token信息響應(yīng)給客戶端
? ?補(bǔ)充:
? ??token的返回,沒有規(guī)定必須在cookie里面,開發(fā)可隨意定制,例如返回json
? ? 客戶端通常需要自行保存,前端人員 自己想辦法
? ? 移動(dòng)端系統(tǒng),token最常見
---登陸后的每次請求將攜帶token
服務(wù)器檢查token合法性(這個(gè)字符串不是隨便生成的,有特定的規(guī)則算法生成;后端最常見的token技術(shù):JWT (json web token))
核心區(qū)別點(diǎn):
session需要將?登錄用戶信息? 存儲(chǔ)在服務(wù)器,sessionID就是普通的編號,無特殊意義
token通常有自證功能,服務(wù)器一般不需要存儲(chǔ)?登錄用戶信息
token技術(shù)相對于session技術(shù)而言更加安全:
token有效期短,token采用了簽名,加密等安全措施,可以把有效防止token被偽造和修改
session長時(shí)間保存在服務(wù)器緩存中,容易被攻擊盜取,且會(huì)影響服務(wù)器性能
sessionID存儲(chǔ)在cookie中,安全性也低
sessionID是存在服務(wù)器內(nèi)存里,session保存的用戶信息存在服務(wù)器內(nèi)存或數(shù)據(jù)庫,
cookie接收保存服務(wù)器發(fā)來的sessionid,然后每次瀏覽器發(fā)送請求就會(huì)帶上cookie的數(shù)據(jù)。
token是服務(wù)器加密的用戶信息,服務(wù)器將token發(fā)給瀏覽器,瀏覽器用cookie或storage保存cookie。然后瀏覽器每次發(fā)送請求就帶上token,服務(wù)器將其解密并確認(rèn)用戶登錄。
服務(wù)器驗(yàn)證是前提。
cookie保存在客戶端,服務(wù)器不加密不保存;
session保存在服務(wù)器,服務(wù)器要加密并保存;
token保存在客戶端,服務(wù)器要加密不保存。