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

nat123映射怎么用?超详细步骤,外网访问内网轻松搞定
nat123域名怎么用?两种方式轻松搞定
nat123怎么用?简单几步实现内网穿透
内网穿透工具对比:nat123、花生壳与轻量新选择
远程访问内网很简单:用对工具,一“箭”穿透
ngrok下载完全指南:从入门到获取客户端
内网远程桌面软件:穿透局域网边界的数字窗口
从外网远程访问内网服务器的完整方案
Windows Server 2008端口转发完全教程:netsh命令添加/查看/删除/重置
为什么三层交换机转发比Linux服务器快?转发表硬件加速的秘密