📜  jwt 的 npm 包 (1)

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

JWT 的 npm 包

简介

JSON Web Token(JWT)是一种颁发和认证令牌的工具。在服务端生成一个 JWT 令牌,在客户端存储该令牌,在请求服务器时在 HTTP 请求头中发送该令牌,服务器可以通过解密该令牌得到用户信息,完成认证流程。

npm 上有很多 JWT 相关的包,其中最受欢迎的几个是 jsonwebtoken,jsonwebtoken-promisified,jsonwebtoken-express 。

jsonwebtoken

jsonwebtoken 模块提供生成 JWT 和验证 JWT 的功能。通过该模块,可以在服务端生成对应的 JWT,然后在客户端通过 AJAX 请求时发送给服务器。服务器可以解析 JWT,获得用户信息。

  • 安装
$ npm install jsonwebtoken
  • 使用
const jwt = require('jsonwebtoken');
const payload = { /* some data */ };
const secret = 'my_secret_key';
const token = jwt.sign(payload, secret);
console.log(token);
const jwt = require('jsonwebtoken');
const token = 'eyJhbGciO ... zUwOTAyfQ.tgSfLpX9zTfTeePCNK1Gkg';
const secret = 'my_secret_key';
const decoded = jwt.verify(token, secret);
console.log(decoded);
jsonwebtoken-promisified

jsonwebtoken-promisifiedjsonwebtoken 的 Promise 版本,提供了对 jsonwebtoken 的 Promise 封装,使用起来更加简单和方便。

  • 安装
$ npm install jsonwebtoken-promisified
  • 使用
const jwt = require('jsonwebtoken-promisified');
const payload = { /* some data */ };
const secret = 'my_secret_key';
jwt.sign(payload, secret)
  .then(token => {
    console.log(token);
  })
  .catch(err => {
    console.log('Error:', err.message);
  });

const token = 'eyJhbGciO ... zUwOTAyfQ.tgSfLpX9zTfTeePCNK1Gkg';
jwt.verify(token, secret)
  .then(decoded => {
    console.log(decoded);
  })
  .catch(err => {
    console.log('Error:', err.message);
  });
jsonwebtoken-express

jsonwebtoken-expressjsonwebtokenexpress 中使用的简化版。通过在 express 中使用 jsonwebtoken-express,可以更加方便的生成和验证 JWT 令牌。

  • 安装
$ npm install jsonwebtoken-express
  • 使用
const express = require('express');
const jwt = require('jsonwebtoken-express');
const app = express();

app.use(jwt({ secret: 'my_secret_key' }));

app.get('/', (req, res) => {
  console.log(req.jwt);
  res.send('Hello World!');
});

app.listen(3000, () => console.log('Server started!'));
结语

总结一下,JWT 主要在服务端生成,然后在客户端存储该令牌,在请求服务器时在 HTTP 请求头中发送该令牌。服务器可以通过解密该令牌得到用户信息,完成认证流程。npm 上有很多 JWT 相关的包,其中最受欢迎的几个是 jsonwebtoken,jsonwebtoken-promisified,jsonwebtoken-express。使用起来非常简单,只需要几行代码就可以实现 JWT 的颁发和认证。