1.jsonwebtokens
(1)概述
jsonwebtokens簡稱jwt,是后端用來生成token的一個庫
(2)組成
header(頭部):{
'alg': 'HS256',
'typ': 'JWT'
}
//注釋:header默認(rèn)是以上配置項
payload(數(shù)據(jù)):{
iss:Issuer,發(fā)行者
sub:Subject,主題
aud:Audience,觀眾
exp:Expiration time,過期時間
nbf:Not before
iat:Issued at,發(fā)行時間
jti:JWT ID
}
//注釋:以上是官方給出的一些配置默認(rèn)的鍵名,除了這些你還可以自己定義,自己定義的參數(shù),通過jwt的verify可以解碼出來,從而進(jìn)行數(shù)據(jù)庫的查找
secret(簽名):'I_LOVE_JING'
//注釋:這個簽名你可以自己隨便定義,但是要確保他的安全性,因為后面要經(jīng)行解碼的時候,要用到
(3)方法
sign(payload,secret, {expiresIn:60*60*24// 授權(quán)時效24小時})//此方法會生成一個token,第一個參數(shù)是數(shù)據(jù),第二個參數(shù)是簽名,第三個參數(shù)是token的過期時間可以不設(shè)置
verify(token,secret)//此方法會將一個token解碼,這個token是由哪些數(shù)據(jù)構(gòu)成的,只要傳進(jìn)去的secret正確,就可以解碼出對應(yīng)的數(shù)據(jù),第一個參數(shù)是一個token,第二個參數(shù)是一個簽名
2.生成token
const jwt = require('jsonwebtokens');
let payload = {name:'張三',admin:true};
let secret = 'I_LOVE_JING';
let token = jwt.sign(payload,secret);
console.log(token)
3.解碼token
let payload = jwt.verify(token,secret)
console.log(payload)