express,MySQL 实现登录接口

embedded/2024/10/16 0:22:28/

使用 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.ppmy.cn/embedded/123970.html

相关文章

146. LRU 缓存【 力扣(LeetCode) 】

零、原题链接 146. LRU 缓存 一、题目描述 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类: LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中&#xff…

Opencv第十一章——视频处理

1. 读取并显示摄像头视频 1.1 VideoCapture类 VideoCapture类提供了构造方法VideoCapture(),用于完成摄像头的初始化工作,其语法格式如下: capture cv2.VideoCapture(index) 参数说明: capture:要打开的摄像头视频。 index:摄像头设备索引。…

安装配置pytorch(cuda、、cudnn、torch、torchvision对应版本)

参考: Pytorch环境配置——cuda、、cudnn、torch、torchvision对应版本(最全)及安装方法_cuda12.2对应的pytorch版本-CSDN博客 https://download.pytorch.org/whl/torch_stable.html Previous PyTorch Versions | PyTorch

怎么ping网络ip地址通不通

怎么Ping网络IP地址通不通?要检查网络中的IP地址是否连通,可以使用‌Ping命令。Ping命令通过发送ICMP(Internet Control Message Protocol,因特网控制消息协议)Echo请求报文并等待回应,来判断目标主机是否可…

LLM端侧部署系列 | PowerInfer-2助力AI手机端侧部署47B大模型 (论文解读)

引言 简介 PowerInfer-2 概述 神经元感知的运行时推理 多态神经元引擎 内存中的神经元缓存 灵活的神经元加载 Neuron-Cluster-Level Pipeline 生成执行计划 执行 总结 0. 引言 一雨池塘水面平,淡磨明镜照檐楹。东风忽起垂杨舞,更作荷心万点声…

可视化图表与源代码显示配置项及页面的动态调整功能分析

可视化图表与源代码显示配置项及页面的动态调整功能分析 文章目录 可视化图表与源代码显示配置项及页面的动态调整功能分析1.分析图表源代码2.分析源代码显示功能**完整代码参考:** 3.分析源代码显示及动态调整**完整代码参考:** 4.分析代码编辑器及运行…

c++11新特性

1. auto 自动推导变量类型&#xff0c;简化代码书写。 #include <iostream> #include <type_traits>#if defined(__linux__) || defined(__linux) #include <cxxabi.h> #define TYPE_NAME(var) abi::__cxa_demangle(typeid(var).name(), 0, 0, 0) #else #de…

C#单元测试(一):用 NUnit 和 .NET Core 进行单元测试

本教程通过一步步构建示例解决方案&#xff0c;为您提供一个互动体验&#xff0c;帮助您学习单元测试的概念。如果您更愿意使用预先构建的解决方案来学习本教程&#xff0c;可以在开始之前查看或下载示例代码。下载说明请参阅“示例与教程”部分。 创建源项目 打开一个终端窗…