Node.js MySQL生成Token实现流程
1.安装必要的模块
首先,我们需要安装一些必要的模块来实现node.js mysql生成token功能。在命令行中执行以下命令来安装所需的模块:
npm install mysql
npm install jsonwebtoken
2.连接MySQL数据库
在使用Node.js与MySQL交互之前,我们需要先建立数据库连接。下面是连接MySQL数据库的步骤:
步骤 | 描述 |
---|---|
1 | 引入mysql模块 |
2 | 创建数据库连接 |
3 | 连接数据库 |
首先,我们需要引入mysql模块。在你的代码文件中添加以下代码:
const mysql = require('mysql');
然后,根据你的MySQL数据库配置,创建数据库连接。在你的代码文件中添加以下代码:
const connection = mysql.createConnection({
host: 'localhost', // 数据库服务器地址
user: 'root', // 数据库用户名
password: 'password', // 数据库密码
database: 'mydb' // 数据库名
});
最后,通过调用connect
方法连接到数据库:
connection.connect((err) => {
if (err) throw err;
console.log('Connected to MySQL database!');
});
3.生成Token
接下来,我们需要使用jsonwebtoken模块来生成token。下面是生成Token的步骤:
步骤 | 描述 |
---|---|
1 | 引入jsonwebtoken模块 |
2 | 创建Token |
3 | 设置Token过期时间 |
首先,我们需要引入jsonwebtoken模块。在你的代码文件中添加以下代码:
const jwt = require('jsonwebtoken');
然后,通过调用sign
方法创建Token。在你的代码文件中添加以下代码:
const token = jwt.sign({ id: userId }, 'secretKey');
其中,id
是存储在Token中的数据,secretKey
是用于签名Token的密钥。
最后,我们可以设置Token的过期时间。在你的代码文件中添加以下代码:
const token = jwt.sign({ id: userId }, 'secretKey', { expiresIn: '1h' });
上述代码将Token设置为1小时后过期。可以根据实际需求自定义过期时间。
4.验证Token
当客户端发送请求时,我们需要验证Token的有效性。下面是验证Token的步骤:
步骤 | 描述 |
---|---|
1 | 获取请求头中的Token |
2 | 验证Token |
3 | 解析Token中的数据 |
首先,我们需要从请求头中获取Token。在你的代码文件中添加以下代码:
const token = req.headers.authorization.split(' ')[1];
然后,通过调用verify
方法验证Token。在你的代码文件中添加以下代码:
jwt.verify(token, 'secretKey', (err, decoded) => {
if (err) {
// Token验证失败
} else {
// Token验证成功
}
});
其中,secretKey
是用于签名Token的密钥。
最后,我们可以解析Token中的数据。在你的代码文件中添加以下代码:
const userId = decoded.id;
上述代码将解析出Token中存储的id
数据,并赋值给userId
变量。
5.完整示例代码
下面是一个完整的示例代码,展示了如何使用Node.js和MySQL生成Token并验证Token的过程:
const mysql = require('mysql');
const jwt = require('jsonwebtoken');
// 创建数据库连接
const connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: 'password',
database: 'mydb'
});
// 连接数据库
connection.connect((err) => {
if (err) throw err;
console.log('Connected to MySQL database!');
});
// 生成Token
const generateToken = (userId) => {
const token = jwt.sign({ id: userId }, 'secretKey', { expiresIn: '1h' });
return token;
}
// 验证Token
const verifyToken = (req, res, next) => {
const token = req.headers.authorization.split(' ')[1];
jwt.verify(token, 'secretKey', (err, decoded) => {
if (err) {
return res.status(403).json({ message: 'Invalid Token' });
} else {