jwt 生成tokoen时如何添加用户名ID和用户名 验证时如何解析出来
时间: 2024-03-19 10:46:31 浏览: 25
在生成JWT时,可以通过传递一个包含用户ID和用户名的payload对象,将这些信息添加到JWT中。例如,可以按照以下方式生成JWT:
```
import jwt from 'jsonwebtoken';
const user = {
userId: 123,
username: 'test@example.com'
};
const token = jwt.sign({ userId: user.userId, username: user.username }, 'secret-key', { expiresIn: '1h' });
```
在这个例子中,使用jsonwebtoken库的sign()方法生成JWT。其中,第一个参数是一个包含用户ID和用户名的payload对象,第二个参数是用于加密的密钥,第三个参数是一个选项对象,用于指定JWT的过期时间等属性。在这个payload对象中,包含了userId和username两个属性,用于在JWT验证时进行用户身份验证。
在JWT验证时,可以通过解码JWT的payload,获取其中的userId和username属性,用于进行身份验证。例如,可以按照以下方式进行验证:
```
import jwt from 'jsonwebtoken';
const token = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOjEyMywidXNlcm5hbWUiOiJ0ZXN0QGV4YW1wbGUuY29tIiwiaWF0IjoxNTE2MjM5MDIyLCJleHAiOjE1MTYyNDI2MjJ9.m7K-vFjA8qN3yIy4H3r2P6cUvLk9TC9cu8i1GnMzUzA';
jwt.verify(token, 'secret-key', (err, decoded) => {
if (err) {
// JWT验证失败
} else {
// JWT验证成功
const userId = decoded.userId;
const username = decoded.username;
}
});
```
在这个例子中,使用jsonwebtoken库的verify()方法对JWT进行验证。其中,第一个参数是JWT字符串,第二个参数是用于加密的密钥,第三个参数是一个回调函数,用于处理验证结果。如果JWT验证成功,则从decoded对象中解析出userId和username属性,用于进行身份验证。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)