Session,session是什么意思

什么是session , 有哪些實現session的機制?

Session,session是什么意思


session直譯為會話 , 代表了用戶與服務端的一系列交互 , 對應于tomcat的實現就是一個對象 , 目的是為了識別用戶 。session出現的背景是因為http本身是無狀態的 , 也就是說每次請求都是相互獨立的 , 那服務端怎么知道兩次交互對應的是一個訪問者呢?session就是為了解決這個問題出現的 , session的生成在服務端 , 但必須配合瀏覽器cookie來使用 , 服務端識別用戶的過程如下:1.用戶通過瀏覽器訪問服務器2.服務端創建session對象 , 并通過set-cookie將session的ID返回給瀏覽器 , 并告知瀏覽器存入cookie3.瀏覽器拿到session的ID后存入cookie4.瀏覽器后續向服務端請求時會帶上cookie中的sessionID5.服務端根據sessionID找到之前創建的session對象來識別訪問用戶(用戶信息往往會存入該session對象)6.用戶關閉瀏覽器時瀏覽器清除cookie中的sessionID有問題歡迎交流 。
Token是什么?和session、cookie相比 , 使用場景有什么區別?
【Session,session是什么意思】
Session,session是什么意思


在Web開發領域 , 相信大家對于Cookie和Session都很熟悉 , Cookie和Session都是會話保持技術的解決方案 。隨著技術的發展 , Token機制出現在我們面前 , 不過很多開發者對于Token和Cookie、Session的區別及使用場景分辨不清 。Cookie和Session的用途要知道我們訪問網站都是通過HTTP協議或HTTPS協議來完成的 , HTTP協議它本身是無狀態的協議(即:服務器無法分辨哪些請求是來源于同個客戶) 。
而業務層面會涉及到客戶端與服務器端的交互(同網站下多個頁面間能共享數據) , 此時服務器端必須要保持會話狀態 , 這樣才能進行用戶身份的鑒別 。由于HTTP無狀態的特性 , 如果要實話客戶端和服務器端的會話保持 , 那就需要其它機制來實現 , 于是Cookie和Session應運而生 。通常情況下 , Session和Cookie是搭配在一起使用的 。
Token是什么上面說到的Session和Cookie機制來保持會話 , 會存在一個問題:客戶端瀏覽器只要保存自己的SessionID即可 , 而服務器卻要保存所有用戶的Session信息 , 這對于服務器來說開銷較大 , 而且不利用服務器的擴展(比如服務器集群時 , Session如何同步存儲就是個問題)!于是有人思考 , 如果把Session信息讓客戶端來保管而且無法偽造不就可以解決這個問題了?進而有了Token機制 。
Token俗稱為“令牌” , 它的構成是:uid:用戶唯一身份標識timestamp:當前時間戳sign:簽名字符串 , 防止第三方偽造數據;簽名密鑰是存儲在服務器端的 , 其它人無法知道其它附加參數 。Token機制下的認證流程Token機制其實和Cookie機制極其相似 , 主要有以下流程:1、用戶登錄進行身份認證 , 認證成功后服務器端生成Token返回給客戶端;2、客戶端接收到Token后保存在客戶端(可保存在Cookie、LocalStorage、SessionStorage中);3、客戶端再次請求服務器端時 , 將Token作為請求頭放入Headers中;4、服務器端接收請求頭中的Token , 將用戶參數按照既定規則再進行一次簽名 , 兩次簽名若一致則認為成功 , 反之數據存在篡改請求失敗 。

推薦閱讀