session、token、jwt、oauth2 傻傻分不清
-
通俗地講就是 驗(yàn)證當(dāng)前用戶的身份,證明“你是你自己”(比如:你每天上下班打卡,都需要通過(guò)指紋打卡,當(dāng)你的指紋和系統(tǒng)里錄入的指紋相匹配時(shí),就打卡成功)
-
用戶名密碼登錄 -
郵箱發(fā)送登錄鏈接 -
手機(jī)號(hào)接收驗(yàn)證碼 -
只要你能收到郵箱/驗(yàn)證碼,就默認(rèn)你是賬號(hào)的主人
-
游客模式下,可以正常瀏覽網(wǎng)站上面的文章,一旦想要點(diǎn)贊/收藏/分享文章,就需要登錄或者注冊(cè)賬號(hào)。 -
登錄模式,當(dāng)用戶登錄成功后,服務(wù)器會(huì)給該用戶使用的瀏覽器頒發(fā)一個(gè)令牌(token),這個(gè)令牌用來(lái)表明你的身份,每次瀏覽器發(fā)送請(qǐng)求時(shí)會(huì)帶上這個(gè)令牌,就可以使用游客模式下無(wú)法使用的功能。
-
用戶第一次請(qǐng)求服務(wù)器的時(shí)候,服務(wù)器根據(jù)用戶提交的相關(guān)信息,創(chuàng)建對(duì)應(yīng)的 Session -
請(qǐng)求返回時(shí)將此 Session 的唯一標(biāo)識(shí)信息 SessionID 返回給瀏覽器 -
瀏覽器接收到服務(wù)器返回的 SessionID 信息后,會(huì)將此信息存入到 Cookie 中,同時(shí) Cookie 記錄此 SessionID 屬于哪個(gè)域名 -
當(dāng)用戶第二次訪問(wèn)服務(wù)器的時(shí)候,請(qǐng)求會(huì)自動(dòng)判斷此域名下是否存在 Cookie 信息,如果存在自動(dòng)將 Cookie 信息也發(fā)送給服務(wù)端,服務(wù)端會(huì)從 Cookie 中獲取 SessionID,再根據(jù) SessionID 查找對(duì)應(yīng)的 Session 信息,如果沒有找到說(shuō)明用戶沒有登錄或者登錄失效,如果找到 Session 證明用戶已經(jīng)登錄可執(zhí)行后面操作。
-
安全性:Session 比 Cookie 安全,Session 是存儲(chǔ)在服務(wù)器端的,Cookie 是存儲(chǔ)在客戶端的。 -
存取值的類型不同:Cookie 只支持存字符串?dāng)?shù)據(jù),想要設(shè)置其他類型的數(shù)據(jù),需要將其轉(zhuǎn)換成字符串,Session 可以存任意數(shù)據(jù)類型。 -
有效期不同:Cookie 可設(shè)置為長(zhǎng)時(shí)間保持,比如我們經(jīng)常使用的默認(rèn)登錄功能,Session 一般失效時(shí)間較短,客戶端關(guān)閉(默認(rèn)情況下)或者 Session 超時(shí)都會(huì)失效。 -
存儲(chǔ)大小不同:?jiǎn)蝹€(gè) Cookie 保存的數(shù)據(jù)不能超過(guò) 4K,Session 可存儲(chǔ)數(shù)據(jù)遠(yuǎn)高于 Cookie,但是當(dāng)訪問(wèn)量過(guò)多,會(huì)占用過(guò)多的服務(wù)器資源。
Acesss Token
客戶端使用用戶名跟密碼請(qǐng)求登錄
-
服務(wù)端收到請(qǐng)求,去驗(yàn)證用戶名與密碼 -
驗(yàn)證成功后,服務(wù)端會(huì)簽發(fā)一個(gè) token 并把這個(gè) token 發(fā)送給客戶端 -
客戶端收到 token 以后,會(huì)把它存儲(chǔ)起來(lái),比如放在 cookie 里或者 localStorage 里 -
客戶端每次向服務(wù)端請(qǐng)求資源的時(shí)候需要帶著服務(wù)端簽發(fā)的 token -
服務(wù)端收到請(qǐng)求,然后去驗(yàn)證客戶端請(qǐng)求里面帶著的 token ,如果驗(yàn)證成功,就向客戶端返回請(qǐng)求的數(shù)據(jù)
Refresh Token
JWT 認(rèn)證流程:
-
用戶輸入用戶名/密碼登錄,服務(wù)端認(rèn)證成功后,會(huì)返回給客戶端一個(gè) JWT -
客戶端將 token 保存到本地(通常使用 localstorage,也可以使用 cookie) -
當(dāng)用戶希望訪問(wèn)一個(gè)受保護(hù)的路由或者資源的時(shí)候,需要請(qǐng)求頭的 Authorization 字段中使用Bearer 模式添加 JWT
技術(shù)交流群
最近有很多人問(wèn),有沒有讀者交流群,想知道怎么加入。
最近我創(chuàng)建了一些群,大家可以加入。交流群都是免費(fèi)的,只需要大家加入之后不要隨便發(fā)廣告,多多交流技術(shù)就好了。
目前創(chuàng)建了多個(gè)交流群,全國(guó)交流群、北上廣杭深等各地區(qū)交流群、面試交流群、資源共享群等。
有興趣入群的同學(xué),可長(zhǎng)按掃描下方二維碼,一定要備注:全國(guó) Or 城市 Or 面試 Or 資源,根據(jù)格式備注,可更快被通過(guò)且邀請(qǐng)進(jìn)群。
往期推薦
招人!阿里!!
張小龍:做 PC 版微信是一種破壞,本來(lái)不想做
「吳X凡」的瓜,程序員這樣吃才高級(jí)!
評(píng)論
圖片
表情
