node.js生成token 验证token
时间: 2023-11-30 10:04:02 浏览: 81
在 Node.js 中,可以使用 jsonwebtoken 模块来生成和验证 JWT(JSON Web Tokens)。
首先需要安装 jsonwebtoken 模块,可以使用 npm 命令进行安装:
```
npm install jsonwebtoken
```
接着,使用以下代码生成 token:
```javascript
const jwt = require('jsonwebtoken');
const payload = {
id: '123',
username: 'john.doe',
role: 'admin'
};
const secret = 'mysecretkey';
const token = jwt.sign(payload, secret, { expiresIn: '1h' });
console.log(token);
```
在这个例子中,`payload` 是一个对象,包含要传递给客户端的数据。`secret` 是一个字符串,用于对 token 进行加密。`expiresIn` 是一个可选的参数,用于设置 token 的有效期。
接下来,可以使用以下代码验证 token:
```javascript
const jwt = require('jsonwebtoken');
const secret = 'mysecretkey';
const token = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjEyMyIsInVzZXJuYW1lIjoiam9obi5kb2UiLCJyb2xlIjoiYWRtaW4iLCJleHAiOjE2MjM5NzY5MTB9.9z9WZ1tjKg2x2PdMkL8OyNz5cV7Kj1zZS5a5Ngf0Ku4';
jwt.verify(token, secret, (err, decoded) => {
if (err) {
console.error(err);
} else {
console.log(decoded);
}
});
```
在这个例子中,`token` 是要验证的 token 字符串。`jwt.verify()` 方法会将 token 解密,并验证签名和有效期。如果验证成功,`decoded` 参数将包含解密后的数据。
需要注意的是,token 中的数据是可以被解密的,因此不应该在其中包含敏感信息。只有在经过验证后,才能信任其中的数据。
阅读全文