session、token、jwt、oauth2 傻傻分不清



通俗地講就是 驗(yàn)證當(dāng)前用戶的身份,證明“你是你自己”(比如:你每天上下班打卡,都需要通過指紋打卡,當(dāng)你的指紋和系統(tǒng)里錄入的指紋相匹配時,就打卡成功)
用戶名密碼登錄 郵箱發(fā)送登錄鏈接 手機(jī)號接收驗(yàn)證碼 只要你能收到郵箱/驗(yàn)證碼,就默認(rèn)你是賬號的主人
游客模式下,可以正常瀏覽網(wǎng)站上面的文章,一旦想要點(diǎn)贊/收藏/分享文章,就需要登錄或者注冊賬號。 登錄模式,當(dāng)用戶登錄成功后,服務(wù)器會給該用戶使用的瀏覽器頒發(fā)一個令牌(token),這個令牌用來表明你的身份,每次瀏覽器發(fā)送請求時會帶上這個令牌,就可以使用游客模式下無法使用的功能。

用戶第一次請求服務(wù)器的時候,服務(wù)器根據(jù)用戶提交的相關(guān)信息,創(chuàng)建對應(yīng)的 Session 請求返回時將此 Session 的唯一標(biāo)識信息 SessionID 返回給瀏覽器 瀏覽器接收到服務(wù)器返回的 SessionID 信息后,會將此信息存入到 Cookie 中,同時 Cookie 記錄此 SessionID 屬于哪個域名 當(dāng)用戶第二次訪問服務(wù)器的時候,請求會自動判斷此域名下是否存在 Cookie 信息,如果存在自動將 Cookie 信息也發(fā)送給服務(wù)端,服務(wù)端會從 Cookie 中獲取 SessionID,再根據(jù) SessionID 查找對應(yīng)的 Session 信息,如果沒有找到說明用戶沒有登錄或者登錄失效,如果找到 Session 證明用戶已經(jīng)登錄可執(zhí)行后面操作。
安全性:Session 比 Cookie 安全,Session 是存儲在服務(wù)器端的,Cookie 是存儲在客戶端的。 存取值的類型不同:Cookie 只支持存字符串?dāng)?shù)據(jù),想要設(shè)置其他類型的數(shù)據(jù),需要將其轉(zhuǎn)換成字符串,Session 可以存任意數(shù)據(jù)類型。 有效期不同:Cookie 可設(shè)置為長時間保持,比如我們經(jīng)常使用的默認(rèn)登錄功能,Session 一般失效時間較短,客戶端關(guān)閉(默認(rèn)情況下)或者 Session 超時都會失效。 存儲大小不同:單個 Cookie 保存的數(shù)據(jù)不能超過 4K,Session 可存儲數(shù)據(jù)遠(yuǎn)高于 Cookie,但是當(dāng)訪問量過多,會占用過多的服務(wù)器資源。
Acesss Token

客戶端使用用戶名跟密碼請求登錄
服務(wù)端收到請求,去驗(yàn)證用戶名與密碼 驗(yàn)證成功后,服務(wù)端會簽發(fā)一個 token 并把這個 token 發(fā)送給客戶端 客戶端收到 token 以后,會把它存儲起來,比如放在 cookie 里或者 localStorage 里 客戶端每次向服務(wù)端請求資源的時候需要帶著服務(wù)端簽發(fā)的 token 服務(wù)端收到請求,然后去驗(yàn)證客戶端請求里面帶著的 token ,如果驗(yàn)證成功,就向客戶端返回請求的數(shù)據(jù)
Refresh Token


JWT 認(rèn)證流程:
用戶輸入用戶名/密碼登錄,服務(wù)端認(rèn)證成功后,會返回給客戶端一個 JWT 客戶端將 token 保存到本地(通常使用 localstorage,也可以使用 cookie) 當(dāng)用戶希望訪問一個受保護(hù)的路由或者資源的時候,需要請求頭的 Authorization 字段中使用Bearer 模式添加 JWT


評論
圖片
表情
