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 {