NodeJs+MySQL怎么实现注册登录功能

NodeJs+MySQL怎么实现注册登录功能

在我们的应用程序中,用户注册与登录是最重要的部分之一,因此正确的实现方式至关重要。在本文中,我将向你展示如何使用 Node.js 和 MySQL 来实现注册和登录功能。我们将使用 Node.js 作为后端技术,MySQL 作为数据库。

1. 创建数据库和表

第一步是创建一个数据库和一个包含用户信息的表。在 MySQL 终端中执行以下 SQL 语句:

CREATE DATABASE mydb;

USE mydb;

CREATE TABLE users (
  id INT AUTO_INCREMENT PRIMARY KEY,
  username VARCHAR(255) NOT NULL UNIQUE,
  password VARCHAR(255) NOT NULL
);

2. 创建 Node.js 应用程序

使用命令行工具创建一个新的 Node.js 应用程序:

mkdir node-mysql-auth

cd node-mysql-auth

npm init -y

npm install express mysql body-parser express-session bcryptjs --save

3. 实现注册和登录功能

以下是实现注册和登录功能的代码:

// 导入所需的模块

const express = require('express');
const mysql = require('mysql');
const bodyParser = require('body-parser');
const session = require('express-session');
const bcrypt = require('bcryptjs');

// 创建数据库连接

const db = mysql.createConnection({
  host: 'localhost',
  user: 'root',
  password: 'password',
  database: 'mydb'
});

// 创建应用程序

const app = express();

// 配置中间件

app.use(bodyParser.urlencoded({ extended: false }));
app.use(session({
  secret: 'secret',
  resave: true,
  saveUninitialized: true
}));

// 处理 GET 请求

app.get('/', (req, res) => {
  res.send('Hello World!');
});

// 处理 POST 请求

app.post('/register', (req, res) => {
  const { username, password } = req.body;
  bcrypt.hash(password, 10, (err, hash) => {
    if(err) {
      throw err;
    }
    db.query(
      'INSERT INTO users (username, password) VALUES (?, ?)',
      [username, hash],
      (err, result) => {
        if(err) {
          throw err;
        }
        res.send('注册成功');
      }
    );
  });
});

app.post('/login', (req, res) => {
  const { username, password } = req.body;
  db.query(
    'SELECT * FROM users WHERE username = ?',
    [username],
    (err, result) => {
      if(err) {
        throw err;
      }
      if(result.length === 0) {
        res.send('用户名不存在');
      } else {
        bcrypt.compare(password, result[0].password, (err, success) => {
          if(success) {
            req.session.loggedIn = true;
            req.session.username = username;
            res.send('登录成功');
          } else {
            res.send('密码不正确');
          }
        });
      }
    }
  );
});

// 启动服务器

app.listen(3000, () => {
  console.log('服务器正在监听端口 3000');
});

4. 测试应用程序

现在,我们已经完成了注册和登录功能的实现,让我们测试一下应用程序吧。使用命令行工具启动应用程序:

node app.js

在浏览器中打开 http://localhost:3000,应该会看到 “Hello World!” 的输出。我们可以使用 POSTman 等工具向应用程序发送 POST 请求来测试注册和登录功能。

到此为止,我们已经成功地实现了 Node.js 和 MySQL 的注册和登录功能。

晓白博客网版权所有,原文地址https://www.xbnb.cn/6720
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 如有资源失效请在下面及时反馈,谢谢!! 抢沙发

请登录后发表评论

    请登录后查看评论内容