什么是 njwt?
njwt 是一个基于 Node.js 的 JSON Web Token (JWT)库。JWT 在前后端分离的应用中被广泛应用于验证用户身份和授权。njwt 利用 Node.js 的加密模块实现了 JWT 的创建和验证。
安装 njwt
njwt 可以通过 npm 进行安装:
npm install njwt
创建 JWT
使用 njwt 创建 JWT 非常简单。首先,你需要设置一个密钥。密钥用于生成 JWT 的签名,防止 JWT 的篡改。下面是一个设置密钥的例子:
const njwt = require('njwt'); // 设置签名密钥 const secretKey = 'my-secret-key';
接着,你可以通过下面的代码创建一个 JWT,并将其存储在一个变量中:
// 创建 JWT const claims = { iss: 'example.com', sub: 'user@example.com' }; const jwt = njwt.create(claims, secretKey);
在上面的代码中,我们使用 njwt.create
方法创建了一个 JWT。claims
参数是一个包含 JWT 载荷(payload)的对象。在上面的例子中,我们设置了 JWT 的发行人(iss
)和主题(sub
)。secretKey
参数是我们在前面定义的密钥。在这个例子中,我们将 JWT 存储在了 jwt
变量中。
验证 JWT
当客户端发送一个带有 JWT 的请求时,服务器需要验证该 JWT 来确保请求是来自合法的用户。下面是一个使用 njwt 进行 JWT 验证的例子:
-- -------------------- ---- ------- ----- ---- - ---------------- -- --- --- ----- --------- - -------------------------------------------------------------------------------------------------------------------------------------------------- -- -- --- ---------------------- ---------------- ----- ------------ -- - -- ----- - ------------------- - ---- - ------------------------- - ---
在上面的例子中,我们使用 njwt.verify
方法解码了一个 JWT。第一个参数是 JWT 字符串,第二个参数是我们在前面定义的密钥。如果解码成功,它将返回一个包含解码后 JWT 载荷的对象。否则,它将抛出一个错误。
示例代码
下面是一个完整的例子,用于创建和验证一个 JWT。
-- -------------------- ---- ------- ----- ---- - ---------------- -- ------ ----- --------- - ---------------- -- -- --- ----- ------ - - ---- -------------- ---- ------------------ -- ----- --- - ------------------- ----------- -- - --- ------ ----- --------- - -------------- ----------------- --------------- -- -- --- ---------------------- ---------- ----- ------------ -- - -- ----- - ------------------- - ---- - ---------------- --- -------------------------------------- - ---
在上面的例子中,我们首先设置了签名密钥,然后创建了一个 JWT。我们将 JWT 编码为字符串,并在控制台输出。然后,我们使用 njwt.verify
方法解码 JWT。如果解码成功,我们将输出 JWT 载荷。否则,我们将输出错误信息。
结论
在本文中,我们介绍了如何使用 njwt 创建和验证 JWT。njwt 不仅易于使用,还提供了许多有用的选项,例如设置 JWT 过期时间和自定义 JWT 的头部。使用 njwt 可以帮助你轻松地实现 JWT 与 Node.js 应用的集成。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/5eedace8b5cbfe1ea0610b7a