📌  相关文章
📜  JSON Web Token (JWT) 在节点 js 中设置过期时间 - Javascript (1)

📅  最后修改于: 2023-12-03 14:43:34.322000             🧑  作者: Mango

JSON Web Token (JWT) 在 Node.js 中设置过期时间 - JavaScript

JSON Web Token (JWT) 是一种安全的、轻量级的身份认证和授权机制。它使用 JSON 对象来传输信息,并使用密钥对 JSON 对象进行签名,以确保身份验证的安全性。本文将介绍如何在 Node.js 中使用 JSON Web Token (JWT) 设置过期时间。

什么是 JSON Web Token (JWT)?

JSON Web Token (JWT) 是一个开放标准(RFC 7519),它定义了一种紧凑、自包含的格式,用于在各方之间安全地传输信息。它可以作为用户身份验证和授权的一种方式。JWT 通常由三部分组成:头部(Header)、载荷(Payload)和签名(Signature)。头部包含了令牌类型(通常为“JWT”)和签名算法(如 HMAC、RSA 或 ECDSA)。载荷包含了要传输的信息,比如用户 ID、用户名等。签名是对头部和载荷的哈希值进行计算后得到的,使用密钥进行签名可以验证令牌的合法性,保护其内容。

如何使用 JSON Web Token (JWT)?

通过 Node.js 的 jsonwebtoken 模块,我们可以轻松地创建、读取和验证 JSON Web Token (JWT)。使用 jsonwebtoken 模块的基本流程如下:

const jwt = require('jsonwebtoken');

// 生成 JWT
const token = jwt.sign(payload, secretKey);

// 验证 JWT
const verified = jwt.verify(token, secretKey);

其中,payload 表示要传输的信息,可以是任何 JSON 对象。secretKey 是用来进行签名的密钥。使用 jwt.sign 方法生成 JWT 时,我们可以选择是否设置过期时间。如果设置了过期时间,那么 JWT 在过期时间到达之后就会失效,无法再被使用。

如何在 JSON Web Token (JWT) 中设置过期时间?

我们可以通过在调用 jwt.sign 方法时设置 expiresIn 参数来设置 JWT 的过期时间。expiresIn 参数是一个数字或字符串,表示 JWT 的有效期。例如:

const token = jwt.sign({ userId: 123 }, 'secretKey', { expiresIn: '1h' });

在上面的代码中,我们设置了 JWT 的有效期为 1 小时。过期时间也可以用数字表示,比如 60 表示 60 秒。

当 JWT 到期后,我们需要使用 try...catch 语句捕捉 jwt.verify 方法抛出的异常来判断 JWT 是否有效。例如:

try {
  const verified = jwt.verify(token, 'secretKey');
  // 解密成功,JWT 有效
} catch (err) {
  // 解密失败,JWT 无效
}
总结

本文介绍了 JSON Web Token (JWT) 的基本概念和使用方法,以及如何在 Node.js 中设置 JWT 的过期时间。JSON Web Token (JWT) 是一种简单且安全的身份认证和授权机制,适合用于各种应用场景。如果你需要在你的应用中使用身份认证和授权,JSON Web Token (JWT) 是一个值得考虑的选择。