nodejs mysql登录注册,NodeJS实现登录注册功能(图文)

该Demo根据菜鸟教程的练手项目,请提前到菜鸟教程的官网查看nodejs的相关教程,根据教程实际操作一遍,然后自己动手去实现登录、注册功能,此Demo只作参考,不符合前端相关规范。

aa9660e16642

使用的技术栈

node+express+mongodb

项目目录结构

node_modules: 第三方模块目录

public: 公共文件目录(js、css、image)

login.html:登录页面

register.html:注册页面

main.html:主页面

db.js:数据库相关封装(数据库添加、查询)

login.js:接口启动文件(登录、注册接口)

登录场景

(1)用户名不能为空;

(2)密码不能为空;

(3)用户名和密码不为空的情况下,查询数据库,判断用户是否存在。

如果存在,判断用户名和密码是否一致,一致登录成功;不一致返回用户名或密码错误;

如果不存在,直接返回不存在该用户。

注册场景

(1)用户名不能为空;

(2)密码不能为空;

(3)用户名和密码不为空的情况下,查询数据库,判断用户是否存在。

如果存在,返回该用户已存在,可直接登录;

如果不存在,注册用户,插入数据库。

部分操作演示

登录

aa9660e16642

login.jpg

主页

aa9660e16642

main.jpg

注册

aa9660e16642

register.jpg

插入数据库

aa9660e16642

db.jpg

项目初始化

1、新建目录

新建目录,例如:node-login

2、安装express

安装 Express 并将其保存到依赖列表中:

打开cmd命令行,定位到项目目录,使用命令行cnpm install express --save

如下图:

aa9660e16642

以上命令会将 Express 框架安装在当前目录的 node_modules 目录中, node_modules 目录下会自动创建 express 目录。以下几个重要的模块是需要与 express 框架一起安装的:

body-parser - node.js 中间件,用于处理 JSON, Raw, Text 和 URL 编码的数据。

cookie-parser - 这就是一个解析Cookie的工具。通过req.cookies可以取到传过来的cookie,并把它们转成对象。

multer - node.js 中间件,用于处理 enctype="multipart/form-data"(设置表单的MIME编码)的表单数据。

使用的命令如下:

cnpm install body-parser --save

cnpm install cookie-parser --save

cnpm install multer --save

依赖的模块如图:

aa9660e16642

3、安装MongoDB

使用命令cnpm install mongodb

4、新建文件夹public

新建public文件夹,用来存放公共文件目录(js、css、image)

### 回答1: 可以使用Node.js模块mysql2来连接MySQL数据库,然后实现注册和登录功能。在注册时,可以向数据库插入用户信息;在登录时,可以查询数据库中的用户信息,以验证用户身份。具体实现方法请参考Node.jsMySQL的相关文档和教程。 ### 回答2: Node.jsMySQL是现在非常常用的技术,可以帮助我们构建Web应用程序并完成与数据库的交互。在这里,我会讲述如何用Node.jsMySQL实现注册和登录功能。 首先,让我们建立一个基本的Node.js服务器。通过使用Express框架,我们可以快速创建一个服务器,并且使用中间件完成路由、日志记录等功能。同时,我们需要使用MySQL来完成与数据库的交互。 下面是一个基本的服务器代码,实现了/user/register和/user/login两个路由功能。 ```javascript const express = require('express'); const mysql = require('mysql'); const bodyParser = require('body-parser'); const app = express(); const port = process.env.PORT || 3000; // 配置bodyParser,使得请求可以解析为JSON格式 app.use(bodyParser.urlencoded({ extended: true })); app.use(bodyParser.json()); // 设置MySQL数据库的连接信息 const connection = mysql.createConnection({ host: 'localhost', user: 'root', password: 'password', database: 'nodejs-mysql' }); // 注册功能 app.post('/user/register', (req, res) => { const { name, password } = req.body; connection.query(`SELECT * FROM users WHERE name = '${name}'`, (err, results) => { if (err) throw err; if (results.length > 0) { res.send('用户已存在'); } else { connection.query(`INSERT INTO users (name, password) VALUES ('${name}', '${password}')`, (err, results) => { if (err) throw err; res.send('用户注册成功'); }); } }); }); // 登录功能 app.post('/user/login', (req, res) => { const { name, password } = req.body; connection.query(`SELECT * FROM users WHERE name = '${name}' AND password = '${password}'`, (err, results) => { if (err) throw err; if (results.length > 0) { res.send('用户登录成功'); } else { res.send('用户名或密码错误'); } }); }); // 启动服务器 app.listen(port, () => { console.log(`服务器启动成功,端口号为${port}`); }); ``` 上面的代码中,我们使用了body-parser模块来解析请求的JSON格式数据,同时也配置了MySQL数据库的连接信息。在注册功能中,我们先查询数据库是否已经存在该用户,如果不存在则插入到数据库中,否则返回错误信息。在登录功能中,我们查询数据库是否存在该用户名和密码,如果存在则登录成功,返回用户信息,否则返回错误信息。 在实现注册和登录功能之前,我们需要在MySQL中创建一个名为nodejs-mysql的数据库和一个名为users的数据表。可以使用以下命令创建: ``` CREATE DATABASE nodejs-mysql; USE nodejs-mysql; CREATE TABLE users ( id int(11) NOT NULL AUTO_INCREMENT, name varchar(50) NOT NULL, password varchar(100) NOT NULL, PRIMARY KEY (id) ); ``` 完成以上步骤后,我们可以使用curl或Postman等工具进行测试。在注册功能中,我们可以使用以下命令进行测试: ``` curl --location --request POST 'http://localhost:3000/user/register' \ --header 'Content-Type: application/json' \ --data-raw '{ "name": "admin", "password": "password" }' ``` 在登录功能中,我们可以使用以下命令进行测试: ``` curl --location --request POST 'http://localhost:3000/user/login' \ --header 'Content-Type: application/json' \ --data-raw '{ "name": "admin", "password": "password" }' ``` 以上就是用Node.jsMySQL实现注册和登录功能的基本步骤。当然,我们还可以进行更多的功能拓展,例如使用bcrypt.js模块进行密码加密,使用jsonwebtoken模块进行用户认证等,希望能对大家有所帮助。 ### 回答3: Node.js 是一个非常流行的后端 JavaScript 运行时,它可以帮助我们快速构建高性能的 Web 应用程序。而 MySQL 是一个开源的关系型数据库管理系统,它是 Web 开发中使用最广泛的数据库之一。Node.jsMySQL 都是非常成熟和稳定的技术,因此它们的集成是非常简单的。 实现注册和登录功能是 Web 应用程序中的基础功能,下面我们来介绍一下如何使用 Node.jsMySQL 实现。 首先,使用 NPM 安装必要的依赖库。在命令行中输入以下命令: ```npm i express mysql body-parser express-session``` 上述依赖库分别是: - Express:Web 开发框架 - mysqlMySQLNode.js 驱动程序 - body-parser:解析 HTTP 请求消息体的中间件 - express-session:会话管理中间件 接下来,我们需要连接MySQL 数据库。在代码中创建一个 MySQL 连接实例,代码如下: ``` const mysql = require('mysql'); const connection = mysql.createConnection({ host: 'localhost', user: 'root', password: '', database: 'testdb' }); connection.connect(function(err) { if (err) { console.error('Error connecting to MySQL: ' + err.stack); return; } console.log('Connected to MySQL as id ' + connection.threadId); }); ``` 在上述代码中,我们创建了一个 MySQL 连接实例,并定义了连接参数。然后使用 connect() 方法连接MySQL 数据库,并打印连接的 threadId。 接下来,我们需要创建一个用户表来存储用户信息。在 MySQL 数据库中创建一个名为 users 的表,代码如下: ``` CREATE TABLE users ( id INT(11) NOT NULL AUTO_INCREMENT, username VARCHAR(50) NOT NULL, password VARCHAR(100) NOT NULL, PRIMARY KEY (id) ); ``` 现在,我们已经创建了用户表,接下来让我们实现用户注册和登录功能。 用户注册功能 用户注册的流程大致如下: - 接收用户提交的注册信息(包括用户名和密码) - 检查用户名是否已经被注册过 - 如果用户名没有被注册,将用户信息存储到数据库中 在代码中,我们可以使用一个简单的路由来处理用户提交的注册信息,代码如下: ``` const express = require('express'); const app = express(); app.use(express.urlencoded({ extended: true })); app.use(express.json()); app.post('/signup', (req, res) => { const { username, password } = req.body; connection.query( 'SELECT id FROM users WHERE username = ?', [username], (err, rows) => { if (err) throw err; if (rows.length > 0) { res.json({ message: 'This username is already taken.' }); } else { connection.query( 'INSERT INTO users (username, password) VALUES (?, ?)', [username, password], (err, result) => { if (err) throw err; res.json({ message: 'Registration successful.' }); } ); } } ); }); app.listen(3000, () => { console.log('Server started on port 3000'); }); ``` 在上述代码中,我们定义了一个 POST 请求路由 /signup,用于接收用户提交的注册信息。首先从请求消息体中解析出用户名和密码,然后查询 users 表,看看用户名是否已经存在。如果用户名已经存在,则返回一个错误信息。否则,将用户名和密码插入到数据库中。 用户登录功能 用户登录的流程大致如下: - 接收用户提交的登录信息(包括用户名和密码) - 验证用户名和密码是否匹配 - 如果用户名和密码匹配,向客户端发送登录状态 在代码中,我们可以使用一个简单的路由来处理用户提交的登录信息,代码如下: ``` app.post('/login', (req, res) => { const { username, password } = req.body; connection.query( 'SELECT id FROM users WHERE username = ? AND password = ?', [username, password], (err, rows) => { if (err) throw err; if (rows.length > 0) { req.session.user = { username }; res.json({ message: 'Login successful.' }); } else { res.json({ message: 'Invalid username or password.' }); } } ); }); ``` 在上述代码中,我们定义了一个 POST 请求路由 /login,用于接收用户提交的登录信息。首先从请求消息体中解析出用户名和密码,然后查询 users 表,判断用户名和密码是否匹配。如果用户名和密码匹配,则将用户信息存储在会话对象中。否则,返回一个错误信息。 至此,我们已经实现Node.jsMySQL 的注册登录功能。要注意的是,上述代码仅供参考,实际应用中需做更多的安全性和优化措施,例如密码加密、SQL 注入攻击防范等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值