0.介绍
JWT(JSON Web Token)是一种开放标准,用于在双方之间安全地传输编码为 JSON 对象的信息。它是一个紧凑和自包含的方式,用于作为 JSON 对象在各方之间安全地传输信息。此信息可以进行验证和信任,因为它是经过数字签名的。JWT 可以使用机密 (使用 HMAC 算法)或使用 RSA 或 ECDSA 的公钥/私钥对进行签名。虽然可以对 JWT 进行加密,以便在各方之间提供保密性,但是我们将关注已签名的Token。 签名Token可以验证其中包含的声明的完整性,而加密Token可以向其他方隐藏这些声明。 当使用公钥/私钥对对令牌进行签名时,该签名还证明只有持有私钥的一方才是对其进行签名的一方 ( 签名技术是保证传输的信息不被篡改,并不能保证信息传输的安全 )。
1.初始化
npm init -y
2.安装jsonwebtoken
npm i jsonwebtoken
3. 导入jsonwebtoken
const jwt=require("jsonwebtoken")
4.创建token
说明:
- 要签名的数据对象,这里是一个包含用户名的 JSON 对象。
- 用于签名的密钥或公钥,这里使用了一个固定字符串 "forever"。在实际应用中,密钥通常存储在环境变量、配置文件或数据库中,以确保安全性。
- 一个选项对象,可以设置 JWT 的一些属性,例如过期时间等。
let token = jwt.sign(
{
username: "李四",
},
"forever",
{
expiresIn: 60 * 2, //单位是秒
}
);
5.效验token
说明:
token
:需要验证的JWT字符串。"forever"
:用于签名JWT的密钥或公钥。在这个例子中,我们使用了一个固定的字符串"forever",表示密钥是固定的且不会改变。在实际应用中,密钥通常存储在环境变量、配置文件或数据库中,以确保安全性。- 一个回调函数,当验证成功时,会执行这个函数并传入两个参数:
err
和data
。如果验证失败,err
将包含错误信息;如果验证成功,data
将包含解码后的JWT数据。
jwt.verify(token, "forever", (err, data) => {
if (err) {
console.log("效验失败");
return;
}
console.log(data);
});
6.成功