session 和token 的區別

2021-10-02 06:34:46 字數 1163 閱讀 3035

目錄

一、session的狀態保持及弊端

二、token認證機制

當使用者第一次通過瀏覽器使用使用者名稱和密碼訪問伺服器時,伺服器會驗證使用者資料,驗證成功後在伺服器端寫入session資料,向客戶端瀏覽器返回sessionid,瀏覽器將sessionid儲存在cookie中,當使用者再次訪問伺服器時,會攜帶sessionid,伺服器會拿著sessionid從資料庫獲取session資料,然後進行使用者資訊查詢,查詢到,就會將查詢到的使用者資訊返回,從而實現狀態保持。

弊端:1、伺服器壓力增大

通常session是儲存在記憶體中的,每個使用者通過認證之後都會將session資料儲存在伺服器的記憶體中,而當使用者量增大時,伺服器的壓力增大。

2、csrf跨站偽造請求攻擊

session是基於cookie進行使用者識別的, cookie如果被截獲,使用者就會很容易受到跨站請求偽造的攻擊。

3、擴充套件性不強

如果將來搭建了多個伺服器,雖然每個伺服器都執行的是同樣的業務邏輯,但是session資料是儲存在記憶體中的(不是共享的),使用者第一次訪問的是伺服器1,當使用者再次請求時可能訪問的是另外一台伺服器2,伺服器2獲取不到session資訊,就判定使用者沒有登陸過。

token與session的不同主要在①認證成功後,會對當前使用者資料進行加密,生成乙個加密字串token,返還給客戶端(伺服器端並不進行儲存)

②瀏覽器會將接收到的token值儲存在local storage中,(通過js**寫入local storage,通過js獲取,並不會像cookie一樣自動攜帶)

③再次訪問時伺服器端對token值的處理:伺服器對瀏覽器傳來的token值進行解密,解密完成後進行使用者資料的查詢,如果查詢成功,則通過認證,實現狀態保持,所以,即時有了多台伺服器,伺服器也只是做了token的解密和使用者資料的查詢,它不需要在服務端去保留使用者的認證資訊或者會話資訊,這就意味著基於token認證機制的應用不需要去考慮使用者在哪一台伺服器登入了,這就為應用的擴充套件提供了便利,解決了session擴充套件性的弊端。

目錄

token和session的區別

1.為什麼要有session的出現?答 是由於網路中http協議造成的,因為http本身是無狀態協議,這樣,無法確定你的本次請求和上次請求是不是你傳送的。如果要進行類似論壇登陸相關的操作,就實現不了了。2.session生成方式?答 瀏覽器第一次訪問伺服器,伺服器會建立乙個session,然後同時為...

token和session的區別

session和token都是用來保持會話,功能相同 不同的使用者訪問服務端的時候會在session物件中儲存鍵值對,鍵 用來儲存開啟這個使用者資訊的 鑰匙 在登入成功後,鑰匙 通過cookie返回給客戶端,客戶端儲存為sessionid記錄在cookie中。當客戶端再次訪問時,會預設攜帶cooki...

session和token的區別

為什麼要有session的出現?答 是由於網路中http協議造成的,因為http本身是無狀態協議,這樣,無法確定你的本次請求和上次請求是不是你傳送的。如果要進行類似論壇登陸相關的操作,就實現不了了。session生成方式?答 瀏覽器第一次訪問伺服器,伺服器會建立乙個session,然後同時為該ses...