????????在平常開發(fā)中言询,用于用戶登錄校驗的方法可以分為cookie和token,這兩者比平常開發(fā)都有用到俯萎,那區(qū)別是什么,原先我覺得用戶登錄是后臺的事不必多了解运杭,用多了以后就開始好奇夫啊,為什么有些項目用cookie 有些用token?
一、cookie
? ? cookie之前在做存儲區(qū)別的時候有說過辆憔,大小只有4kb, 往返于客戶端和服務端之間撇眯。在用戶校驗過程中,主要還是和服務端的session配合使用虱咧。
? 大概的使用流程是熊榛,用戶請求登錄接口,服務端進行用戶校驗腕巡,校驗通過則把用戶信息儲存在服務端的session當中玄坦,并通過set-cookie把userId保存在瀏覽器當中,后續(xù)的每次請求cookie都會攜帶userId來服務端進行校驗绘沉。
cookie的優(yōu)點:
?1煎楣、便于理解,比較好掌握车伞,用戶數(shù)據(jù)在服務端相對安全
? 2择懂、session集中管理用戶信息,可直接封禁某個用戶另玖。
? 3困曙、屬于http規(guī)范,默認被瀏覽器存儲
cookie的不足:
? 1日矫、所有信息都存在session當中會占用內存
? 2赂弓、不支持跨域共享cookie,隨著大型項目支持的范圍越來越多哪轿,cookie的方式也逐漸滿足不了項目的需求盈魁。
? ?3、為了安全窃诉,限制比較多
? ?4杨耙、session多進程多服務器時不好同步
二、token
? ? 相對于cookie自動攜帶在瀏覽器當中不同的是飘痛,token是自定義攜帶珊膜。在進行用戶登錄中,服務端判斷登錄通過宣脉,接口會返回一個加密的數(shù)據(jù)车柠,用戶的所用信息都儲存在這個加密數(shù)據(jù)當中,在客戶端獲取這個數(shù)據(jù)以后本地進行存儲,并在后續(xù)的請求當中自定義放在Request Headers當中竹祷。
? token的優(yōu)點:
? ? ?1谈跛、來自民間的力量(不屬于http規(guī)范,cookie是學院派)塑陵,使用起來比較自由
? ? ?2感憾、沒有跨域限制
? ? ?3、不占用服務器內存令花,多進程多服務器不受影響
?token的缺點:
? ? ?1阻桅、數(shù)據(jù)請求在客戶端,無法快速封禁某個用戶兼都。(也是可以實現(xiàn)嫂沉,比如建立黑名單)
? ? ? 2、體積比cookie大俯抖,會增加請求數(shù)量(影響也不是很大)
? ? ? 3输瓜、存在安全隱患,所有信息都存在token中芬萍,密鑰一旦泄露敏感信息就有可能被竊取尤揣。
三、如何選擇cookie還是token?
? 如果有嚴格的用戶管理要求的用cookie+session的方式柬祠,如果沒有嚴格要求推薦使用token方式北戏,會減少很多服務端的壓力。
? ??