📅  最后修改于: 2023-12-03 14:44:44.245000             🧑  作者: Mango
在 Web 应用程序开发中,令牌认证是一种常见的身份验证方式。它通过发放令牌来实现在不暴露用户凭证的情况下访问资源的机制。
在 Node.js 中,我们可以使用一些库来实现令牌认证。以下是介绍如何使用 jsonwebtoken 库实现基于令牌的授权认证的示例。
首先,需要安装 jsonwebtoken 库。
npm install jsonwebtoken
下面是生成 JWT 令牌的示例代码:
const jwt = require('jsonwebtoken');
const secretKey = 'mySecretKey';
const payload = {
user: {
id: '1234567890',
name: 'John Doe'
}
};
const options = {
expiresIn: '1h',
issuer: 'myApp'
};
const token = jwt.sign(payload, secretKey, options);
console.log(token);
这里我们使用 jwt.sign(payload, secretKey, options)
方法生成 JWT 令牌。
payload
是一个对象,用于指定在令牌中使用的信息。例如包含用户 ID 和姓名。secretKey
是一个字符串,用于生成签名并验证令牌。options
包含一些可选的配置项,例如过期时间和发布者。jwt.sign
方法返回生成的 JWT 令牌字符串。
下面是验证 JWT 令牌的示例代码:
const token = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjp7ImlkIjoiMTIzNDU2Nzg5MCIsIm5hbWUiOiJKb2huIERvZSJ9LCJpYXQiOjE2MzE1NDE1NjcsImV4cCI6MTYzMTU0NDM2NywiaXNzIjoibXlBcHAifQ.h8vnbUOVWB_JdC51LRjKja8HQ6x0ulNHQIpE2Fh1yN8';
const secretKey = 'mySecretKey';
jwt.verify(token, secretKey, (err, decoded) => {
if (err) {
console.log(err.message);
} else {
console.log(decoded);
}
});
这里我们使用 jwt.verify(token, secretKey, callback)
方法验证 JWT 令牌。
token
是我们要验证的 JWT 令牌字符串。secretKey
是与生成令牌时使用的密钥一致的密钥。callback
是一个回调函数,它将解码后的负载作为第二个参数返回,如果令牌验证失败,会抛出一个错误。
以上就是在 Node.js 中使用 jsonwebtoken 库实现令牌认证的一个例子。使用 JWT 令牌进行身份验证具有以下优点: