Node 生成 JWT Token的使用方法

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的第三部分。

生成簽名時需要使用密鑰,密鑰只保存在服務端,不能向用戶公開,尤其重要,它是一個字符串,我們可以自由設定。
在這裏插入圖片描述

使用方法

  1. 安裝 jsonwebtoken
npm i -S jsonwebtoken
  1. 使用
#生成一個token
const jwt = require('jsonwebtoken')

const token = jwt.sign(
        { username },   //payload,可以根據需求進行寫入
        'PRIVATE_KEY',		//自定義的一個密鑰
        { expiresIn: JWT_EXPIRED } // 過期時間
      )

如果您也正在學習前端的路上,記得關注該博主,學習更多關於前端的知識~

博主主頁 Poetic Code

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章