Token 是什麼
Token 本質就是是字符串,用於請求時附帶在請求頭中,校驗請求是否合法及判斷用戶的身份。
Token 與 Session、Cookie 的區別
- Session 保存在服務端,用於客戶端與服務端連接時,臨時保存用戶信息,當用戶釋放連接後,Session 將被釋放;
- Cookie 保存在客戶端,當客戶端發起請求時,Cookie 會附帶在 http header 中,提供給服務端辨識用戶身份;
- Token 請求時提供,用於校驗用戶是否具備訪問接口的權限。
Token 的用途
Token 的用途主要有三點:
- 攔截無效請求,降低服務器處理壓力;
- 實現第三方 API 授權,無需每次都輸入用戶名密碼鑑權;
- 身份校驗,防止 CSRF 攻擊。
JWT 簡析
官方地址:https://jwt.io/
JWT由三部分組成:
其中第一部份header爲頭部:
alg爲加密的算法 通常直接使用 HMAC SHA256。其它的算法還有
typ爲聲明的類型。
第二部份payload也就是存放數據的地方,也可以說是存放有效信息的地方。
其中sub爲jwt所面向的用戶,
name可以說是一個名字,
jwt就是簽發的時間。
第三部份是一個簽證信息,這個簽證信息由三部分組成:
分別由base64加密後的header和base64加密後的payload使用.連接組成的字符串,然後通過header中聲明的加密方式進行加鹽secret組合加密,然後就構成了jwt的第三部分。
生成簽名時需要使用密鑰,密鑰只保存在服務端,不能向用戶公開,尤其重要,它是一個字符串,我們可以自由設定。
使用方法
- 安裝 jsonwebtoken
npm i -S jsonwebtoken
- 使用
#生成一個token
const jwt = require('jsonwebtoken')
const token = jwt.sign(
{ username }, //payload,可以根據需求進行寫入
'PRIVATE_KEY', //自定義的一個密鑰
{ expiresIn: JWT_EXPIRED } // 過期時間
)
如果您也正在學習前端的路上,記得關注該博主,學習更多關於前端的知識~