token和session的区别
session和token都是用來(lái)保持會(huì)話,功能相同
一、session機(jī)制,原理
- session是服務(wù)端存儲(chǔ)的一個(gè)對(duì)象,主要用來(lái)存儲(chǔ)所有訪問(wèn)過(guò)該服務(wù)端的客戶端的用戶信息(也可以存儲(chǔ)其他信息),從而實(shí)現(xiàn)保持用戶會(huì)話狀態(tài)。但是服務(wù)器重啟時(shí),內(nèi)存會(huì)被銷毀,存儲(chǔ)的用戶信息也就消失了。
不同的用戶訪問(wèn)服務(wù)端的時(shí)候會(huì)在session對(duì)象中存儲(chǔ)鍵值對(duì),“鍵”用來(lái)存儲(chǔ)開啟這個(gè)用戶信息的“鑰匙”,在登錄成功后,“鑰匙”通過(guò)cookie返回給客戶端,客戶端存儲(chǔ)為sessionId記錄在cookie中。當(dāng)客戶端再次訪問(wèn)時(shí),會(huì)默認(rèn)攜帶cookie中的sessionId來(lái)實(shí)現(xiàn)會(huì)話機(jī)制。
- session是基于cookie的。
- session持久化
用于解決重啟服務(wù)器后session就消失的問(wèn)題。在數(shù)據(jù)庫(kù)中存儲(chǔ)session,而不是存儲(chǔ)在內(nèi)存中。通過(guò)包:express-mysql-session
- 其它
當(dāng)客戶端存儲(chǔ)的cookie失效后,服務(wù)端的session不會(huì)立即銷毀,會(huì)有一個(gè)延時(shí),服務(wù)端會(huì)定期清理無(wú)效session,不會(huì)造成無(wú)效數(shù)據(jù)占用存儲(chǔ)空間的問(wèn)題。
二、token機(jī)制,原理
- 適用于項(xiàng)目級(jí)的前后端分離(前后端代碼運(yùn)行在不同的服務(wù)器下)
請(qǐng)求登錄時(shí),token和sessionId原理相同,是對(duì)key和key對(duì)應(yīng)的用戶信息進(jìn)行加密后的加密字符,登錄成功后,會(huì)在響應(yīng)主體中將{token:'字符串'}返回給客戶端。客戶端通過(guò)cookie、sessionStorage、localStorage都可以進(jìn)行存儲(chǔ)。再次請(qǐng)求時(shí)不會(huì)默認(rèn)攜帶,需要在請(qǐng)求攔截器位置給請(qǐng)求頭中添加認(rèn)證字段Authorization攜帶token信息,服務(wù)器端就可以通過(guò)token信息查找用戶登錄狀態(tài)。
總結(jié)
以上是生活随笔為你收集整理的token和session的区别的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 彻底理解cookie、session、t
- 下一篇: HttpDNS与传统DNS的区别