當前位置:
首頁 > 最新 > Cookie,Session和Token概念的正確理解

Cookie,Session和Token概念的正確理解

Cookie Session Token 存在的意義

Http 協議是一個無狀態協議, 客戶端每次發出請求, 請求之間是沒有任何關係的.

比如在淘寶登陸頁面登陸成功了, 當你跳轉到商品頁面, 服務端如何知道是"你"在訪問這個商品頁面, 因為這個商品頁面很多個人都可以訪問,伺服器為了區分到底是誰在訪問這個頁面, Cookie Session就是為了解決這個問題的.

Cookie 和 Session 到底是怎麼來解決這個問題的呢, 舉個例子:

小楊要去一個寫字樓, 第一次需要到前台填寫登記表格, 登記完成之後前台給了小楊一張通行卡, 這棟大樓內部的安保人員看到通行卡就能確認小楊的身份信息和授權信息.

這裡小楊就是客戶端, 通行卡就是Cookie,前台就是服務端, 表格就是Session. 客戶端第一次訪問伺服器, 伺服器端保存客戶的信息並且給客戶端一個Cookie, 客戶端攜帶Cookie去訪問服務端, 服務端通過攜帶的Cookie找出該用戶信息. 服務端就能夠知道是誰訪問了.

為了方便理解,可以先看下這張流程執行圖加深概念:

總之 Session 是對服務端來說的, 客戶端沒有Session這一說.

關於Tooken:

現在的服務端的組件漸漸升級, 更像是提供API, 使得前端和後端的概念解耦, 移動應用和網頁應用可以使用相同的後端. 在非Web的情況下, 沒有Cookie的時候,怎麼解決用戶身份認證問題.

API 應該設計成無狀態的, 這意味著沒有登陸,註銷的方法, 也沒有Sessions, API的設計者同樣也不能依賴Cookie, 因為不能保障這個請求都是有瀏覽器所發出的, 自然我們需要一個新的機制, Token就是為了解決這個問題的

Token 通常叫令牌, 最簡單的Token組成 uid(用戶唯一身份標識),time(時間戳),sign(簽名 用token的前幾位+鹽以hash演算法壓縮成一定長的十六進位字元串,可以防止惡意的第三方拼接token 請求伺服器),還可以把不變的參數也放進token,避免多次查庫.

我們可以把Token想像成一個安全的護照。你在一個安全的前台驗證你的身份(通過你的用戶名和密碼),如果你成功驗證了自己,你就可以取得這個。當你走進大樓的時候(試圖從調用API獲取資源),你會被要求驗證你的護照,而不是在前台重新驗證。

Token 的使用流程:

A:當用戶首次登錄成功(註冊也是一種可以適用的場景)之後, 伺服器端就會生成一個 token 值,這個值,會在伺服器保存token值(保存在資料庫中),再將這個token值返回給客戶端;

B:客戶端拿到 token 值之後,進行本地保存;

C:當客戶端再次發送網路請求(一般不是登錄請求)的時候,就會將這個 token 值附帶到參數中發送給伺服器;

D:伺服器接收到客戶端的請求之後,會取出token值與保存在本地(資料庫)中的token值做對比。

Token的身份認證邏輯:

對比一:如果兩個 token 值相同, 說明用戶登錄成功過!當前用戶處於登錄狀態!

對比二:如果沒有這個 token 值, 則說明沒有登錄成功;

對比三:如果 token 值不同: 說明原來的登錄信息已經失效,讓用戶重新登錄。

Token 和 Session 的區別

Session和 token並不矛盾

記得關注我.


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Browser的小餅乾 的精彩文章:

TAG:Browser的小餅乾 |