Skip to content
📈0️⃣

jwt 中的 decode 和 verify 的区别

jwt.decode()jwt.verify()都是用于操作 JSON Web Token (JWT) 的方法,但它们的功能和作用有所不同:

1. jwt.decode(token)

  • jwt.decode()方法用于解码 JWT 令牌,并返回一个包含解码信息的对象。
  • 这个方法只是简单地解析 JWT 令牌中的各个部分,提取出其中包含的基本信息,如令牌的头部、负载(payload)或签名算法等。
  • jwt.decode()不会进行任何验证,仅提供对 JWT 结构的基本访问,提取数据并返回给您。

2. jwt.verify(token, mySecretKey)

  • jwt.verify()方法用于验证 JWT 令牌的有效性,并在验证通过时返回解码后的令牌信息。
  • 它会验证 JWT 的数字签名是否正确,同时也会检查令牌是否过期(如果设置了过期时间)以及其他相关的验证设定。
  • 需要传入密钥(mySecretKey)来验证数字签名。
  • 如果验证失败,jwt.verify()会抛出一个错误,您可以捕获该错误并进行适当的处理。

综上所述,jwt.decode()方法主要用于提取 JWT 令牌中的信息,而jwt.verify()方法则用于验证 JWT 令牌的有效性和完整性。

示例代码

以下是示例代码:

javascript
const jwt = require("jsonwebtoken");
const { mySecretKey } = require("./../utils/config");

const token = "yourJWTTokenHere";

// 解码 JWT 令牌,获取存储的信息
const decoded = jwt.decode(token);
console.log("Decoded Token:", decoded);

try {
  // 验证 JWT 令牌的有效性
  const verifiedToken = jwt.verify(token, mySecretKey);
  console.log("Verified Token:", verifiedToken);
} catch (error) {
  console.error("JWT verification failed:", error.message);
}

在上面的示例中,使用jwt.decode()解码 JWT,并将解码后的信息存储在decoded变量中。然后,使用jwt.verify()验证 JWT 令牌的有效性,并将验证通过后的信息存储在verifiedToken变量中。如果验证失败,则捕获错误并进行适当的处理。