Json Web Token 介紹與使用

2021-09-22 21:06:27 字數 1613 閱讀 7184

一、我們先解釋一下他的含義:

token的引入:token是在客戶端頻繁向服務端請求資料,服務端頻繁的去資料庫查詢使用者名稱和密碼並進行對比,判斷使用者名稱和密碼正確與否,並作出相應提示,在這樣的背景下,token便應運而生。

token的定義:token是服務端生成的一串字串,以作客戶端進行請求的乙個令牌,當第一次登入後,伺服器生成乙個token便將此token返回給客戶端,以後客戶端只需帶上這個token前來請求資料即可,無需再次帶上使用者名稱和密碼。

使用token的目的:token的目的是為了減輕伺服器的壓力,減少頻繁的查詢資料庫,使伺服器更加健壯,多次攜帶使用者賬號密碼有可能導致使用者資訊洩露的風險。

二、json web token是幹什麼(簡稱jwt,在http通訊過程中,進行身份認證。)

我們知道http通訊是無狀態的,因此客戶端的請求到了服務端處理完之後是無法返回給原來的客戶端。因此需要對訪問的客戶端進行識別,常用的做法是通過session機制:客戶端在服務端登陸成功之後,服務端會生成乙個sessionid,返回給客戶端,客戶端將sessionid儲存到cookie中,再次發起請求的時候,攜帶cookie中的sessionid到服務端,服務端會快取該session(會話),當客戶端請求到來的時候,服務端就知道是哪個使用者的請求,並將處理的結果返回給客戶端,完成通訊。

通過上面的分析,可以知道session存在以下問題:

session儲存在服務端,當客戶訪問量增加時,服務端就需要儲存大量的session會話,對伺服器有很大的考驗;

當服務端為集群時,使用者登陸其中一台伺服器,會將session儲存到該伺服器的記憶體中,但是當使用者的訪問到其他伺服器時,會無法訪問,通常採用快取一致性技術來保證可以共享,或者採用第三方快取來儲存session,不方便。

三、json web token是怎麼做的?

客戶端通過使用者名稱和密碼登入伺服器;

服務端對客戶端身份進行驗證;

服務端對該使用者生成token,返回給客戶端;

客戶端將token儲存到本地瀏覽器,一般儲存到cookie中;

客戶端發起請求,需要攜帶該token;

服務端收到請求後,首先驗證token,之後返回資料。

服務端不需要儲存token,只需要對token中攜帶的資訊進行驗證即可;

無論客戶端訪問後台的那台伺服器,只要可以通過使用者資訊的驗證即可。

四、json web token長什麼樣子呢?

通過名字就可以看出來,是乙個json。

由三部分內容組成:

頭(header),一般很少改動直接使用預設的即可:

肚子(playload),東西都裝在肚子裡,預設的內容有:

根據需要使用者可以自己定義,token中傳輸的內容,一般會將使用者名稱,角色等資訊放到token中。      

尾(signature),前面兩部分轉為字串後,使用base64編碼,然後進行加密得到乙個字串。

token = 頭(base64)+ 肚子(base64)+ 尾;

Json Web Token身份認證

使用者身份認證一般有5種方式 因為前後端分離的緣故,現在的後台多數只提供資料部分,一般使用json格式,所以json web token是比較流行的認證方式。jwt的認證方式相比其他的認證方式有一下優點 jwt包含3個部分 header 123 4 jwt的頭部是固定的,alg是演算法的意思表示該j...

Json Web Token身份認證

使用者身份認證一般有5種方式 因為前後端分離的緣故,現在的後台多數只提供資料部分,一般使用json格式,所以json web token是比較流行的認證方式。jwt的認證方式相比其他的認證方式有一下優點 jwt包含3個部分 header 123 4 jwt的頭部是固定的,alg是演算法的意思表示該j...

JSON Web Token入門學習

學習記錄 看了這篇帖子,有時間再來整理 阮一峰的網路日誌 實際上的jwt內容類似下圖 它是乙個很長的字串,中間用點 分隔成三個部分。注意,jwt 內部是沒有換行的,這裡只是為了便於展示,將它寫成了幾行。寫成一行,應該如下 header.payload.signature 客戶端收到伺服器返回的 jw...