Node.js+MySQL打造登录页面教程
nodejs用mysql数据库写登陆页面

首页 2025-06-14 22:23:04



使用Node.js与MySQL数据库构建用户登录页面 在当今的数字化时代,用户认证功能几乎成为了所有Web应用程序的核心组成部分

    无论是社交媒体平台、在线购物网站还是企业级应用,用户登录功能都是确保数据安全和用户个性化体验的关键

    本文将详细介绍如何使用Node.js和MySQL数据库来构建一个简单而有效的用户登录页面

    通过这一实践,你将深入了解后端开发的基本流程,包括环境搭建、数据库设计、路由处理、会话管理等关键步骤

     一、技术选型与环境搭建 1. 技术选型 -Node.js:作为JavaScript的运行环境,Node.js以其高效的事件驱动和非阻塞I/O模型,在处理高并发请求时表现出色

    它支持多种编程范式,拥有丰富的生态系统,提供了大量的第三方模块和工具

     -MySQL:一个流行的关系型数据库管理系统,用于存储和管理数据

    MySQL具有成熟稳定、广泛应用和良好的社区支持等特点

     -Express:一个流行的Node.js Web框架,它封装了HTTP的许多方法,提供了路由控制、中间件等功能,帮助我们快速搭建Web应用

     -EJS:模板引擎,用于生成动态HTML页面

    它允许我们在HTML中嵌入JavaScript代码,从而动态地渲染页面内容

     2. 环境搭建 在开始开发之前,我们需要确保已经安装了Node.js和MySQL

    然后,创建一个新的项目目录,并在该目录下初始化package.json文件

    接着,安装所需的依赖,如express、mysql2(用于与MySQL数据库进行交互的驱动程序)、ejs等

     二、数据库设计与准备 1. 创建数据库和用户表 首先,我们需要在MySQL数据库中创建一个名为`users`的表来存储用户信息

    可以使用以下SQL语句来创建表: sql CREATE TABLE users( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(255) NOT NULL, password VARCHAR(255) NOT NULL ); 这里,我们定义了三个字段:`id`(自增主键)、`username`(用户名)、`password`(密码)

    在实际应用中,密码应该进行加密存储,以确保用户数据的安全性

     2. 导入数据库文件 如果你有现成的数据库文件(如`user_db.sql`),可以使用以下命令将其导入到MySQL数据库中: bash mysql -u your_username -p your_database_name < user_db.sql 请将`your_username`替换为你的MySQL用户名,`your_database_name`替换为你要使用的数据库名称

     三、项目结构与代码实现 1. 项目结构 为了使项目结构清晰,便于管理和维护,我们采用以下目录结构: plaintext user-login-project/ ├── public/ │└── styles.css ├── views/ │├── login.ejs │└── index.ejs ├── models/ │└── user.js ├── middleware/ │└── auth.js ├── app.js ├── package.json └── test/ └── user.test.js -`public/`:存放静态文件,如CSS、JavaScript等

     -`views/`:存放模板文件,如EJS模板

     -`models/`:存放数据库模型文件

     -`middleware/`:存放中间件文件,如用户认证中间件

     -`app.js`:项目的入口文件

     -`package.json`:项目的依赖配置文件

     -`test/`:存放测试文件

     2. 创建登录页面 在`views/`目录下创建`login.ejs`文件,该文件用于显示登录表单

    以下是一个简单的登录表单示例: html Login

Login

<% if(error){ %>

<%= error %>

<%} %>


在这个页面中,我们使用EJS模板引擎来动态显示错误信息

    如果登录失败,会显示相应的错误提示

     3. 处理用户登录请求 在`app.js`文件中添加代码来处理用户登录请求

    首先,我们需要创建一个数据库连接池,然后定义一个POST路由来处理登录请求

    以下是一个简单的示例: javascript const express = require(express); const mysql = require(mysql2/promise); const ejs = require(ejs); const bodyParser = require(body-parser); const path = require(path); const session = require(express-session); const app = express(); const port =3000; // 配置模板引擎 app.set(view engine, ejs); app.set(views, path.join(__dirname, views)); // 配置静态文件目录 app.use(express.static(path.join(__dirname, public))); // 解析表单数据 app.use(bodyParser.urlencoded({ extended: true})); // 创建数据库连接池 const pool = mysql.createPool({ host: localhost, user: your_username, password: your_password, database: your_database_name, waitForConnections: true, connectionLimit:10, }); // 配置会话中间件 app.use(session({ secret: secret-key, resave: false, saveUninitialized: true, cookie:{ secure: false} // 注意:在生产环境中应设置为true,并使用HTTPS })); // 用户登录路由 app.post(/login, async(req, res) =>{ const{ username, password} = req.body; try{ const【rows】 = await pool.query(SELECT - FROM users WHERE username

MySQL连接就这么简单!本地远程、编程语言连接方法一网打尽
还在为MySQL日期计算头疼?这份加一天操作指南能解决90%问题
MySQL日志到底在哪里?Linux/Windows/macOS全平台查找方法在此
MySQL数据库管理工具全景评测:从Workbench到DBeaver的技术选型指南
MySQL密码忘了怎么办?这份重置指南能救急,Windows/Linux/Mac都适用
你的MySQL为什么经常卡死?可能是锁表在作怪!快速排查方法在此
MySQL单表卡爆怎么办?从策略到实战,一文掌握「分表」救命技巧
清空MySQL数据表千万别用错!DELETE和TRUNCATE这个区别可能导致重大事故
你的MySQL中文排序一团糟?记住这几点,轻松实现准确拼音排序!
别再混淆Hive和MySQL了!读懂它们的天壤之别,才算摸到大数据的门道