在前端开发中,安全性是非常重要的。使用 token 来保护用户数据和身份是一种常见的方式。token-manager-express
npm 包为用户提供了一种方便的方法来管理 token。本文将介绍如何使用该包并提供实用示例。
安装和引入
你可以通过 npm 安装该包:
npm install --save token-manager-express
安装完成后,你可以将其引入到你的项目中:
const { TokenManager } = require('token-manager-express');
创建 TokenManager 实例
在开始之前,我们需要创建一个 TokenManager
实例。我们需要为此传递三个参数: secret
、expiryTime
和 algorithm
。
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