jwt 加密解密



let jwt = {     decode(token,secret){         let [header,content,sign] = token.split('.')         let h = JSON.parse(this.fromBase64ToString(header))         let c =  JSON.parse(this.fromBase64ToString(content))
        // 判断 加密后的数据是否一致         if(sign !== this.sign([header,content]).join('.'),secret){             throw new Error('Not Allowd');         }         //  判断是否在有效期内         if(ccc.exp && ccc.exp < Date.now()){             throw new Error('expres time');         }
        return c     },     fromBase64ToString(base64){         return Buffer.from(base64,'base64').toString('utf8')     },     toBase64(str){         return Buffer.from(str).toString('base64')     },     sign(str,secret){         // 签名         return require('crypto').createHmac('sha256',secret).update(str).digest('base64');     },     encode(payload,secret){         let header = this.toBase64(JSON.stringify({'typ':"JWT",alg:'HS256'}))           let content = this.toBase64(JSON.stringify(payload))           // 签名使用 header + . + content         let sign = this.sign([header,content].join('.'),secret)         // 生成好了签名         return [header,content,sign].join('.')     }
}
// export default jwt module.export = jwt  

相关