JWT
官網
json web token,一般用於用戶認證(前後端分離、app 開發)
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
基於傳統的 token 認證
- 用戶登陸,服務端給返回 token,並將 token 保存在服務端,以後用戶在來訪問時,需要攜帶 token,服務端獲取 token 後,再去數據庫中獲取 token 進行校驗
基於 jwt
- 用戶登陸,服務端給用戶返回一個 token(服務端不保存),以後用戶在來訪問,需要攜帶 token,服務端獲取 token 後,在做 token 的校驗
- 優勢在於,相較於傳統的 token 相比,他無須再服務端保存 token
實現過程
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
- 用戶提交用戶名和密碼給服務端,如果登陸成功,使用 jwt 創建一個 token,並返回給用戶
注意:jwt 生成的 token 是由三段字符串組成,並且用 .
連接起來
- 第一段字符串,HEADER,內部包含算法和token 類型。json 轉化成字符串,然後做
base64url
(可以反解回來) 加密(先取的 base64
再把裡面的一些符號用其他符號代替,像 +
替換成 _
)
- 第二段字符串,payload,自定義值(隨你高興寫啥,不用按照下面)。json 轉化成字符串,然後做
base64url
(可以反解回來) 加密(先取的 base64
再把裡面的一些符號用其他符號代替,像 +
替換成 _
)
- 第三段字符串,第一、二部分的密文拼接起來,對前 2 部分密文進行
HS256
加密 + 加鹽,在對 HS256
加密後的密文做 base64url
加密
- 以後用戶在來訪問時,需要攜帶 token,後端需要對 token 進行校驗
- 獲取 token
- 第一步,對 token 進行切割
- 第二步,對第二段進行
base64url
解密,並獲取 payload
信息,並檢測 token 是否已超時
- 第三步,把第 1,2 段拼接,再次執行
HS256
加密
密文 = base64解密(SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c),相等則表示 token 未被修改過,認證通過
- 應用