jsonwebtoken使用
jsonwebtoken是一个用于生成、验证和解析JSON Web Token(JWT)的JavaScript库。JWT是一种开放的标准,用于安全的传输信息,其中包含一组被加密的声明。这些Token可以在发送请求时被包含在请求头或请求参数中,用于验证用户身份和授权访问资源。
## 1. 安装jsonwebtoken
要使用jsonwebtoken,首先需要将它安装到您的项目中。可以使用npm或yarn进行安装。
使用npm安装jsonwebtoken:
```
npm install jsonwebtoken
```
使用yarn安装jsonwebtoken:
```
yarn add jsonwebtoken
```
##2.生成JWT
要生成一个JWT,需要提供一个payload(负载)和一个密钥。负载是一个包含要传输的信息的对象,可以包含任意的自定义声明。密钥是用于对负载进行数字签名的字符串。
下面是一个生成JWT的示例代码:
```javascript
const jwt = require('jsonwebtoken');
const payload =
userId: 1,
username: 'john.doe',
};
const secretKey = 'mySecretKey';
const token = jwt.sign(payload, secretKey);
console.log(token);
```
在上面的例子中,我们使用`jwt.sign(`方法生成JWT。它的第一个参数是负载对象,第二个参数是用于数字签名的密钥。生成的JWT将被打印在控制台上。
##3.验证JWT
要验证一个JWT,需要提供它和用于签名的密钥。验证过程包括检查签名是否有效,并检查声明是否匹配。json检查
下面是一个验证JWT的示例代码:
```javascript
const jwt = require('jsonwebtoken');
const token = 'J1c2VySWQiOjEsInVzZXJuYW1lIjoiam9obi5kb2UiLCJpYXQiOjE2MzIxMDIxODh9.NoDZffjFuBxKeIjaXcZ4BaWof1ORqmXcao-iUJ0gT1E';
const secretKey = 'mySecretKey';
jwt.verify(token, secretKey, (err, decoded) =>
if (err)
('Invalid token');
} else
console.log(decoded);
}
});
```
在上面的例子中,我们使用`jwt.verify(`方法验证JWT。它的第一个参数是要验证的JWT,第二个参数是用于签名的密钥。如果JWT无效,将会在控制台上输出"Invalid token",否则将打印解码后的JWT负载对象。
##4.解析JWT
要解析一个JWT,只需要提供它并调用`jwt.decode(`方法即可。这个过程是无需验证签名的简单解码操作。
下面是一个解析JWT的示例代码:
```javascript
const jwt = require('jsonwebtoken');
const token = 'J1c2VySWQiOjEsInVzZXJuYW1lIjoiam9obi5kb2UiLCJpYXQiOjE2MzIxMDIxODh9.NoDZffjFuBxKeIjaXcZ4BaWof1ORqmXcao-iUJ0gT1E';
const decoded = jwt.decode(token);
console.log(decoded);
```
在上面的例子中,我们使用`jwt.decode(`方法解析JWT。它的参数是要解析的JWT。解析结果将被打印在控制台上。
##5.JWT选项
- `expiresIn`:设置Token的有效时间,可以是一个表示时间段的字符串(例如:"2 days","10h"),或一个整数表示秒数。
- `audience`:设置接收者的值。
- `issuer`:设置发行者的值。
- `subject`:设置主题的值。
- `notBefore`:设置生效时间,Token在此之前无效。
- `clockTolerance`:设置验证时允许的时间偏差。
这些选项可以在生成Token时作为第三个参数传递给`jwt.sign(`方法,也可以在验证Token时作为第二个参数传递给`jwt.verify(`方法。