jsonwebtoken是一個基於nodejs的實現了JSON Web Tokens(JWT)的庫,用於生成和驗證jwt。
一、什麼是JSON Web Tokens
JSON Web Tokens(JWT)是一種在多個系統之間安全地傳遞信息的標準。JWT是一個開放標準(RFC 7519),其定義了一種緊湊的、自包含的方式,用於在通信雙方之間傳輸信息。信息是使用JSON對象的形式,使用安全方式傳輸的。JWT通常用於對於身份驗證進行授權。
二、安裝jsonwebtoken npm
使用npm安裝jsonwebtoken:
npm install jsonwebtoken
三、生成token
jsonwebtoken庫提供了一個jwt.sign(payload, secretOrPrivateKey, [options, callback])方法,用於生成token。
payload是想要在jwt中傳遞的數據,secretOrPrivateKey是用於簽名的密鑰,options中可以設置一些選項,callback是可選參數,用於非同步執行回調函數。
示例代碼:
const jwt = require('jsonwebtoken'); const payload = { id: 123, name: 'Jane' }; const secretKey = 'my_secret_key'; const token = jwt.sign(payload, secretKey, { expiresIn: '1h' }); console.log(token);
輸出結果:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MTIzLCJuYW1lIjoiSmFuZSJ9.E9U53Rf8gd5tTiLbhlBBbYdhHLtHoJ6Mgz-5Uy6pv10
四、驗證token
jsonwebtoken庫提供了jwt.verify(token, secretOrPublicKey, [options, callback])方法,用於驗證token的合法性。
token是待驗證的token,secretOrPublicKey是用於驗證簽名的密鑰,options中可以設置一些選項,callback是可選參數,用於非同步執行回調函數。
示例代碼:
const jwt = require('jsonwebtoken'); const token = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MTIzLCJuYW1lIjoiSmFuZSJ9.E9U53Rf8gd5tTiLbhlBBbYdhHLtHoJ6Mgz-5Uy6pv10'; const secretKey = 'my_secret_key'; jwt.verify(token, secretKey, function(err, decoded) { if (err) { console.log(err.message); } else { console.log(decoded); } });
輸出結果:
{ id: 123, name: 'Jane', iat: 1615558517 }
五、其他設置選項
jsonwebtoken庫提供了很多設置選項,可以根據需要進行配置,以下是常用的設置選項:
- expiresIn – token過期時間
- notBefore – token生效時間
- audience – token的接受者(audience和issuer一般成對出現)
- issuer – token的簽發者(audience和issuer一般成對出現)
- jwtid – token的唯一標識
示例代碼:
const jwt = require('jsonwebtoken'); const payload = { id: 123, name: 'Jane' }; const secretKey = 'my_secret_key'; const token = jwt.sign(payload, secretKey, { expiresIn: '1h', audience: 'www.example.com', jwtid: '123456' }); console.log(token); jwt.verify(token, secretKey, { audience: 'www.example.com', jwtid: '123456' }, function(err, decoded) { if (err) { console.log(err.message); } else { console.log(decoded); } });
輸出結果:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MTIzLCJuYW1lIjoiSmFuZSJ9.UXjxzxU3iNOsGqgLDM8vEaLTlfkuAeT7F9egmFpor84 { id: 123, name: 'Jane', iat: 1615559156 }
六、總結
jsonwebtoken是一個非常好用的jwt實現庫,可以幫助我們快速地生成和驗證jwt,使用非常方便。本文對jsonwebtoken的基本使用做了詳細的闡述,並提供了完整的代碼示例,希望對您有所幫助。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/247558.html