使用 Node.js 和 MySQL 实现菜单管理权限

在现代应用程序中,管理用户的访问权限是一项重要任务。本教程将指导你如何使用 Node.js 和 MySQL 实现一个简单的菜单管理权限系统。我们将通过以下几个步骤来完成这一任务:

步骤 描述
1 创建 MySQL 数据库及表
2 初始化 Node.js 项目
3 安装所需依赖
4 连接 MySQL 数据库
5 实现用户权限管理功能
6 测试功能

步骤详解

1. 创建 MySQL 数据库及表

首先,你需要在 MySQL 中创建一个数据库和相应的表。这是用户管理权限的基础。

CREATE DATABASE menu_management;

USE menu_management;

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(255) NOT NULL,
    password VARCHAR(255) NOT NULL,
    role ENUM('admin', 'user') NOT NULL
);

CREATE TABLE menus (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255) NOT NULL,
    required_role ENUM('admin', 'user') NOT NULL
);

2. 初始化 Node.js 项目

使用以下命令初始化一个新的 Node.js 项目。

npm init -y

3. 安装所需依赖

我们需要安装 mysqlexpress 库。可以使用以下命令安装:

npm install express mysql

4. 连接 MySQL 数据库

在项目根目录下创建一个名为 db.js 的文件,编写以下代码连接到 MySQL 数据库。

// db.js

const mysql = require('mysql');

// 创建数据库连接
const connection = mysql.createConnection({
    host: 'localhost',      // 数据库主机
    user: 'your_username',  // 数据库用户
    password: 'your_password', // 数据库密码
    database: 'menu_management' // 数据库名称
});

// 连接数据库
connection.connect((err) => {
    if (err) throw err;
    console.log('Connected to MySQL database!');
});

module.exports = connection;

5. 实现用户权限管理功能

接下来,我们需要创建一个简单的 Express 服务器,并添加用户权限管理的代码。创建一个名为 server.js 的文件,编写以下代码:

// server.js

const express = require('express');
const connection = require('./db');

const app = express();
app.use(express.json());

// 检查用户权限的中间件
function checkPermission(requiredRole) {
    return (req, res, next) => {
        const userRole = req.body.role; // 假设角色通过请求体传递
        if (userRole !== requiredRole) {
            return res.status(403).send('Access denied.');
        }
        next();
    };
}

// 获取菜单列表,根据用户角色过滤
app.get('/menus', (req, res) => {
    const sql = 'SELECT * FROM menus WHERE required_role = ?';
    connection.query(sql, [req.body.role], (err, results) => {
        if (err) throw err;
        res.json(results);
    });
});

// 启动服务器
const PORT = 3000;
app.listen(PORT, () => {
    console.log(`Server running on port ${PORT}`);
});

6. 测试功能

现在,你可以启动你的服务器:

node server.js

之后,你可以使用 Postman 或其他工具,向 http://localhost:3000/menus 发送 POST 请求,传递 role 字段,来测试你的菜单管理权限。

状态图

下面是我们系统状态的一个简单状态图,展示不同用户角色的权限变化:

stateDiagram
    [*] --> Guest
    Guest --> User: Login
    User --> Admin: Upgrade
    Admin --> User: Downgrade
    Admin --> [*]: Logout
    User --> [*]: Logout

结尾

本篇文章详细介绍了如何使用 Node.js 和 MySQL 实现一个基本的菜单管理权限系统。通过创建数据库、设置 Express 服务器及权限管理功能,你可以灵活地对用户的访问权限进行控制。希望这些步骤能帮助你更好地理解用户权限管理的实现。同时,深入掌握架构设计和数据库操作的知识将会为你的开发生涯奠定坚实的基础!