回覆列表
  • 1 # 網路圈

    眾所周知,HTTP協議它是無狀態的協議,瀏覽器多次請求伺服器,伺服器它無法感知是不是同一使用者的請求,於是就有了Session機制。

    什麼是Session機制?

    Session是儲存在伺服器端的,當瀏覽器第一次請求Web伺服器,伺服器會產生一個Session存放在伺服器裡(可持久化到資料庫中),然後透過響應頭的方式將SessionID返回給瀏覽器寫入到Cookie中,瀏覽器下次請求就會將SessiondID以Cookie形式傳遞給伺服器端,伺服器端獲取SessionID後再去尋找對應的Session。如果找到了則代表使用者不是第一次訪問,也就記住了使用者。

    但需要注意的是,若伺服器做了負載均衡,使用者的下一次請求可能會被定向到其它伺服器節點,若那臺節點上沒有使用者的Session資訊,就會導致會話驗證失敗。所以Session預設機制下是不適合分散式部署的。

    Token的出現是為了解決Session的弊端

    Token我們一般稱為令牌,一般透過MD5、SHA演算法將金鑰、公鑰、時間戳等元素加密產生的加密字串。

    瀏覽器訪問Web伺服器後認證成功後生成Token並返回給客戶端,客戶端瀏覽器後續的請求都會把這個Token帶到伺服器端去驗證,以此判定請求是否合法。

    Session與Token的異同

    Session和Token機制原理上差不多,都是使用者身份驗證的一種識別手段,它們都有過期時間的限制,但兩者又有一些不同的地方。

    1、Session是存放在伺服器端的,可以儲存在:記憶體、資料庫、NoSQL中。它採用空間換時間的策略來進行身份識別,若Session沒有持久化落地儲存,一旦伺服器重啟,Session資料會丟失。

    2、Token是放在客戶端儲存的,採用了時間換空間策略,它也是無狀態的,所以在分散式環境中應用廣泛。

    技術選型依據業務而來,特定的場景適合特定的業務,一般購物車功能會採用Session驗證,介面校驗一般會採用Token驗證,具體採用何種方法,需要大家根據自己的業務進行選擇。

  • 中秋節和大豐收的關聯?
  • 想開個麻辣燙店,需要注意哪些,有經驗的夥伴傳授一下經驗,生活太艱難?