node jsonwebtoken
生活随笔
收集整理的這篇文章主要介紹了
node jsonwebtoken
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
?jsonwebtoken是node版本的JWT(JSON Web Tokens)的實現(xiàn)。
1.什么是JWT?
Json web token (JWT), 是為了在網(wǎng)絡應用環(huán)境間傳遞聲明而執(zhí)行的一種基于JSON的開放標準((RFC 7519).該token被設計為緊湊且安全的,特別適用于分布式站點的單點登錄(SSO)場景。JWT的聲明一般被用來在身份提供者和服務提供者間傳遞被認證的用戶身份信息,以便于從資源服務器獲取資源,也可以增加一些額外的其它業(yè)務邏輯所必須的聲明信息,該token也可直接被用于認證,也可被加密。
傳統(tǒng)的認證用戶信息是用cookie-session,JWT可以更好的實現(xiàn)一站式登錄。
JWT的構成:第一部分我們稱它為頭部(header),第二部分我們稱其為載荷(payload, 類似于飛機上承載的物品),第三部分是簽證(signature)。這3者是有關系的(請google),中間用.分割。
例子:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ
2.jsonwebtoken的使用方法:
1)RSA SHA256算法:
import fs from 'fs'; import path from 'path'; const jwt = require('jsonwebtoken');//生成token的方法 //data是保存的數(shù)據(jù),例子:let data={uid:1} function generateToken(data){let created = Math.floor(Date.now() / 1000);let cert = fs.readFileSync(path.join(__dirname, '../config/rsa_private_key.pem'));//私鑰let token = jwt.sign({data,exp: created + 3600 * 24}, cert, {algorithm: 'RS256'});return token; }//驗證token,最后的res。 // 上面的生成方法,我們得到res.uid=1 function verifyToken(token){console.log('進入驗證');let cert = fs.readFileSync(path.join(__dirname, '../config/rsa_public_key.pem'));//公鑰console.log(cert);let res;try{let result = jwt.verify(token, cert, {algorithms: ['RS256']}) || {};let {exp = 0} = result,current = Math.floor(Date.now()/1000);if(current <= exp){res = result.data || {};}}catch(e){console.log(e);}return res; }
這種用法是要私鑰和公鑰文件的。
生成方法(mac os系統(tǒng)親測可以):
打開命令行工具,輸入openssl,打開openssl; 生成私鑰:genrsa -out rsa_private_key.pem 2048 生成公鑰: rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem 2)HMAC SHA256算法(jsonwebtoken的默認的算法)不需要公鑰私鑰。
jwt.sign()方法只要不寫algorithms項目,就是默認的HMAC SHA256算法。 ?
轉載于:https://www.cnblogs.com/xiaochongchong/p/9009596.html
總結
以上是生活随笔為你收集整理的node jsonwebtoken的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 上云迁移-海量数据迁移解决方案
- 下一篇: css3--圆角