JWT(JSON Web Token)是一种用于对信息进行安全传输的开放标准。JWT 由三部分组成,分别为:
- header:包含加密算法和 token 类型等信息。
- payload:存储要传递的信息,比如用户 ID、用户名等。
- signature:使用私钥签名 header 和 payload,并且可以防止 payload 被篡改。
下面演示如何在 Express 中使用 JWT。
首先,需要安装 jwt 和 jsonwebtoken 模块:
npm install jwt jsonwebtoken
然后在代码中引入:
const jwt = require('jsonwebtoken');
生成 token 的方法如下:
const payload = { id: 1, name: 'John Doe' };
const secret = 'my_secret_key';
const token = jwt.sign(payload, secret);
其中,payload 是要传递的信息,secret 是用于生成签名的秘钥。生成的 token 可以通过响应头或者响应体返回给客户端。
验证 token 的方法如下:
const secret = 'my_secret_key';
const token = req.headers.authorization.split(' ')[1];
jwt.verify(token, secret, (err, decoded) => {
if (err) {
return res.status(401).json({ message: 'Invalid token' });
}
req.user = decoded;
next();
});
其中,从请求头中获取 token,然后使用 verify 方法验证签名是否正确。如果验证失败,则返回错误信息;如果验证成功,则将解码后的信息存储到请求对象中,并调用 next() 方法继续处理请求。在后续的请求处理中,可以使用 req.user 获取存储的用户信息。
以上就是在 Express 中使用 JWT 的基本方法。