实现Node.js MySQL登录

概述

在本文中,我将向你介绍如何使用Node.js和MySQL实现用户登录功能。我们将使用Express框架来创建服务器,并使用MySQL数据库来存储用户信息。

流程概述

下表展示了实现该功能的整个流程:

步骤 描述
步骤1 创建数据库和用户表
步骤2 设置Express服务器
步骤3 创建登录页面
步骤4 处理用户登录请求
步骤5 验证用户信息
步骤6 设置用户会话
步骤7 跳转到用户主页

接下来,我将详细介绍每个步骤应该如何实现。

步骤1:创建数据库和用户表

首先,我们需要在MySQL数据库中创建一个名为users的表来存储用户信息。可以使用以下SQL语句来创建表:

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

步骤2:设置Express服务器

我们将使用Express框架来创建一个简单的服务器。首先,确保已经安装了Node.js和Express。接下来,创建一个新的文件夹并在其中初始化新的Node.js项目,然后安装Express和mysql模块:

mkdir nodejs-mysql-login
cd nodejs-mysql-login
npm init -y
npm install express mysql

创建一个名为server.js的文件,并将以下代码添加到文件中:

const express = require('express');
const app = express();

app.use(express.urlencoded({ extended: true }));
app.use(express.json());

app.listen(3000, () => {
  console.log('Server is running on port 3000');
});

这段代码会创建一个监听在3000端口的Express服务器,并启用对POST请求的JSON和URL编码数据的解析。

步骤3:创建登录页面

我们需要一个简单的HTML表单来接收用户的登录信息。创建一个名为login.html的文件,并将以下代码添加到文件中:

<!DOCTYPE html>
<html>
<head>
  <title>Login</title>
</head>
<body>
  Login
  <form action="/login" method="POST">
    <input type="text" name="username" placeholder="Username"><br>
    <input type="password" name="password" placeholder="Password"><br>
    <button type="submit">Login</button>
  </form>
</body>
</html>

这个简单的表单包含一个用户名输入框、一个密码输入框和一个登录按钮。

步骤4:处理用户登录请求

server.js文件中添加以下代码来处理用户登录请求:

app.post('/login', (req, res) => {
  const { username, password } = req.body;
  
  // TODO: 处理用户登录逻辑
});

这段代码将监听/login路径的POST请求,并提取请求体中的用户名和密码。

步骤5:验证用户信息

在处理用户登录请求的回调函数中添加以下代码来验证用户信息:

app.post('/login', (req, res) => {
  const { username, password } = req.body;
  
  // 查询数据库中是否存在该用户
  connection.query('SELECT * FROM users WHERE username = ?', [username], (error, results) => {
    if (error) throw error;
    
    if (results.length > 0) {
      const user = results[0];
      
      // 验证密码是否匹配
      if (password === user.password) {
        // TODO: 设置用户会话
      } else {
        res.send('Incorrect password');
      }
    } else {
      res.send('User not found');
    }
  });
});

这段代码将使用用户名查询数据库中的用户信息,并验证密码是否匹配。如果密码匹配,我们将继续下一步设置用户会话,否则返回错误信息。

步骤6:设置用户会话

我们将使用express-session模块来设置用户会话。首先,安装该模块:

npm install express-session

然后,在server.js文件中添加以下代码来设置用户会话:

const session = require('express-session');

app.use(session({
  secret: 'secret-key',
  resave