当前位置: 首页 > article >正文

express,MySQL 实现登录接口

使用 Express 和 MySQL 实现一个登录接口涉及几个步骤,包括设置 Express 服务器、连接 MySQL 数据库、创建用户表(如果还没有)、编写登录接口的逻辑等。以下是一个简单的实现示例:

1. 设置项目

首先,创建一个新的项目文件夹并初始化一个新的 Node.js 项目:

mkdir login-api
cd login-api
npm init -y

2. 安装依赖

安装 Express 和 MySQL 相关的依赖:

npm install express mysql2 body-parser

3. 创建数据库和用户表

确保你的 MySQL 数据库已经启动,并创建一个数据库(例如 login_db)和用户表(例如 users)。

CREATE DATABASE login_db;

USE login_db;

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL UNIQUE,
    password VARCHAR(255) NOT NULL -- 注意:实际项目中应使用哈希密码
);

4. 编写服务器代码

在项目文件夹中创建一个 server.js 文件,并添加以下代码:

const express = require('express');
const mysql = require('mysql2');
const bodyParser = require('body-parser');

const app = express();
const port = 3000;

// 配置 MySQL 连接
const db = mysql.createConnection({
    host: 'localhost',
    user: 'root', // 根据实际情况修改
    password: 'your_password', // 根据实际情况修改
    database: 'login_db'
});

// 连接到数据库
db.connect((err) => {
    if (err) {
        throw err;
    }
    console.log('MySQL connected...');
});

// 使用 body-parser 中间件解析 JSON 请求体
app.use(bodyParser.json());

// 登录接口
app.post('/login', (req, res) => {
    const { username, password } = req.body;

    if (!username || !password) {
        return res.status(400).json({ message: 'Username and password are required' });
    }

    const query = 'SELECT * FROM users WHERE username = ?';
    db.query(query, [username], (err, results) => {
        if (err) {
            return res.status(500).json({ message: 'Internal server error' });
        }

        if (results.length === 0) {
            return res.status(401).json({ message: 'Invalid username or password' });
        }

        const user = results[0];

        // 注意:实际项目中应验证哈希密码
        if (user.password === password) {
            return res.status(200).json({ message: 'Login successful', user: { username: user.username } });
        } else {
            return res.status(401).json({ message: 'Invalid username or password' });
        }
    });
});

app.listen(port, () => {
    console.log(`Server is running on http://localhost:${port}`);
});

5. 启动服务器

在终端中运行以下命令启动服务器:

node server.js

6. 测试登录接口

你可以使用 Postman 或其他 API 测试工具来测试登录接口。发送一个 POST 请求到 http://localhost:3000/login,并在请求体中包含 JSON 格式的用户名和密码:

{
    "username": "your_username",
    "password": "your_password"
}

注意事项

  1. 密码存储:在实际项目中,不要以明文形式存储密码。应使用密码哈希(如 bcrypt)来存储和验证密码。
  2. 错误处理:应添加更多的错误处理逻辑,以确保代码的健壮性。
  3. SQL 注入:虽然此示例中使用了参数化查询来防止 SQL 注入,但在实际项目中应保持警惕,避免使用拼接字符串的方式来构建 SQL 查询。

希望这个示例能帮助你实现一个简单的登录接口!


http://www.kler.cn/news/331043.html

相关文章:

  • 2024.9.28更换启辰R30汽车火花塞
  • 如何给一张图像判断失真类型?
  • vscode安装及c++配置编译
  • 【PostgreSQL】提高篇——深入了解不同类型的 JOIN(INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL JOIN)应用操作
  • GaussDB关键技术原理:高弹性(六)
  • 讲职场:不要经常说消极的话
  • SAP 批量修改角色权限
  • 关于Vben Admin多标签页面缓存不生效的问题
  • python入门/列表for循环解析/ [item*item for item in range(1,11)]
  • 【PostgreSQL】提高篇——公用表表达式(CTE)和窗口函数
  • 滚雪球学MySQL[9.2讲]:实战项目:电商系统的需求分析与数据库设计
  • 15分钟学 Python 第33天 :函数式编程简介
  • LeetCode从入门到超凡(五)深入浅出---位运算
  • 【Linux】磁盘分区挂载网络配置进程【更详细,带实操】
  • 学习Spring Boot,应该从哪里开始学起
  • Yolov8分类检测记录
  • PWM:控制信号的秘密武器
  • Kali或Debian系统安装JDK1.8保姆级教程
  • Vue3小兔鲜——二级分类页
  • Spring Boot 集成 MySQL 的详细指南