token 和 jwt 的區別


Token

概念: 令牌, 是訪問資源的憑證

token的認證流程

  1. 用戶輸入用戶名和密碼,發送給服務器,服務器驗證賬號密碼成功
  2. 服務器生成令牌,本質是一個32位的uuid(token: 55833b9d752bc1914b3087c7503ae5f9)
  3. 將該令牌存到數據庫或redis中,key是uuid,value是userId
  4. 把令牌返給客戶端,客戶端把令牌存在cookie中
  5. 下次請求的時候就把令牌放在請求頭里帶上
  6. 從redis中驗證該令牌是否過期
  7. 獲取value內容userId
  8. 根據userId查詢用戶信息,再返回客戶端
  9. 一旦用戶退出登錄,只需要客戶端銷毀token即可,服務器端不需要任何操作

優點

  1. 可以隱藏真實數據
  2. 適用於分布式/微服務
  3. 安全系數高

缺點

  1. 存放在redis,必須依賴服務器,暫用服務器資源
  2. 效率非常低

JWT

概念:JWT是json web token縮寫。它將用戶信息加密到token里,服務器不保存任何用戶信息。服務器通過使用保存的密鑰驗證token的正確性,只要正確即通過驗證

組成:JWT包含三個部分: Header頭部,Payload負載和Signature簽名。由三部分生成token,三部分之間用“.”號做分割

'token':'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJjb2QiOiI2NDA1NzEtODQ4NzY4LTUwMDE3NS00MjkxNDYtMzg5MDY4IiwidXNyIjoiMTM2NzYyOTExODgiLCJleHAiOjE2NDk2NjkzNTAsImlhdCI6MTY0ODQ1OTc1MCwianRpIjoiZmtnamR2ODMyajBzMTBvMTUxNW9nOG1vaGMifQ.mTjcpqGTBIsEF3yEZmy9sr_0gpUsPAhWcAFVEeGI-F4'

JWT登錄過程

優點

  1. 無需服務器端存放數據,減輕服務器端的壓力
  2. 占用帶寬比較小、跨語言
  3. token自身包含用戶信息且無法篡改,在服務(網關)中可以自行解析校驗出用戶信息,對認證服務器(account-svc)壓力小

缺點

  1. 建議不要放銘感數據 userid、手機號碼(如果非要放userId,deptId等信息,可采用rsa256算法加密)RSA256生成Jwt
  2. Jwt生成之后無法修改(發生變化)
  3. 后端無法統計 生成jwt
  4. 無法吊銷令牌,只能等待令牌自身過期
  5. 令牌長度與其包含用戶信息多少正相關,傳輸開銷較大
  6. Jwt是無狀態的,如果別人獲取到了,別人也能用

參考:https://blog.csdn.net/qq_41369135/article/details/116530607


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM