npm 包 token-manager-express 使用教程

在前端开发中,安全性是非常重要的。使用 token 来保护用户数据和身份是一种常见的方式。token-manager-express npm 包为用户提供了一种方便的方法来管理 token。本文将介绍如何使用该包并提供实用示例。

安装和引入

你可以通过 npm 安装该包:

安装完成后,你可以将其引入到你的项目中:

const { TokenManager } = require('token-manager-express');

创建 TokenManager 实例

在开始之前,我们需要创建一个 TokenManager 实例。我们需要为此传递三个参数: secretexpiryTimealgorithm

const tokenManager = new TokenManager(
  'secret', // 用来生成 token 的密钥
  '24h', // token 的过期时间
  'HS256' // 用来签名 token 的算法
);

其中,secret 是用作生成 token 的密钥,expiryTime 是 token 的过期时间(例如 '1d' 表示一天),而 algorithm 是用来签名 token 的算法(可以选择 HS256, HS384, 或 HS512)。

生成 token

我们可以使用 tokenManager.generateToken 方法来生成 token:

const token = tokenManager.generateToken({ userId: '123456' });

在这个例子中,我们将一个包含用户 ID 的对象传递给 generateToken 方法,以生成一个 token。

验证和解码 token

我们可以使用 tokenManager.verifyAndDecodeToken 方法来验证和解码 token。该方法将返回 token 中包含的信息。

const tokenInfo = tokenManager.verifyAndDecodeToken(token);
console.log(tokenInfo);
// output: { userId: '123456', iat: 1631812319, exp: 1631898719 }

在这个例子中,我们验证并解码了刚才生成的 token,并使用一个包含 token 信息的对象输出控制台。

将 token 存储到 cookie 中

通常,我们需要将生成的 token 存储在客户端中,并将其用于与服务器进行通信。为此,我们可以将 token 存储在 cookie 中,而不是将其存储在本地存储或会话存储中。这是因为 cookie 在跨域请求中也可以传递,这对于一些复杂的前端应用程序非常有用。

下面是一个存储 token 的示例:

const express = require('express');
const cookieParser = require('cookie-parser');
const app = express();
app.use(cookieParser());

app.get('/login', (req, res) => {
  const token = tokenManager.generateToken({ userId: '123456' });
  res.cookie('token', token, { httpOnly: true, maxAge: '24h' });
  // 将 token 存储在 cookie 中
  res.send('Logged in!');
});

app.listen(3000);

在这个例子中,我们使用了 cookie-parser 中间件来解析 cookie。然后,我们在 /login 路径上生成一个 token,并将其存储在名为 token 的 cookie 中。

从 cookie 中读取 token

我们还需要找到一种从 cookie 中读取 token 的方法。下面是一个获取 token 的示例:

app.get('/api', (req, res) => {
  const token = req.cookies.token;
  // 从 cookie 中获取 token
  if (!token) {
    return res.status(401).send('Unauthorized');
  }
  try {
    const tokenInfo = tokenManager.verifyAndDecodeToken(token);
    // token 有效,执行后续逻辑
    res.send('Hello ' + tokenInfo.userId);
  } catch (err) {
    console.error(err);
    res.status(401).send('Unauthorized');
  }
});

在这个例子中,我们使用 req.cookies 来读取 token cookie 中的值。然后,我们使用 tokenManager.verifyAndDecodeToken 方法来验证和解码 token,并返回 token 信息。

结语

在本文中,我们介绍了如何使用 token-manager-express npm 包来管理 token。我们看到了如何创建一个 TokenManager 实例,如何生成和验证 token,以及如何将 token 存储在 cookie 中,并从 cookie 中读取 token。掌握这些技能将使你的前端应用程序更加安全和可靠。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/600673e1fb81d47349e53d63


纠错
反馈