node.js实现简单登录注册功能

下面是简单登录注册功能的 node.js 实现完整攻略。

1. 确定需求和技术栈

我们首先需要明确需求:实现用户的注册和登录功能。

而我们使用的后端技术栈包括:

  • Node.js
  • Express.js
  • MongoDB
  • HTML/CSS/JS (前端页面)

2. 设计数据库

我们需要设计一个用户的数据模型,在 MongoDB 中存储,可以使用 Mongoose 来操作 MongoDB。

const mongoose = require('mongoose');

const UserSchema = new mongoose.Schema({
  username: {
    type: String,
    required: true,
    unique: true,
    trim: true,
  },
  password: {
    type: String,
    required: true,
  },
});

const User = mongoose.model('User', UserSchema);

module.exports = User;

上面是用户的数据模型,包括用户名和密码两个字段。

3. 实现注册和登录

下面是注册和登录的示例代码:

const express = require('express');
const bodyParser = require('body-parser');
const bcrypt = require('bcrypt');
const User = require('./models/user');

const app = express();
const saltRounds = 10;

// 通过中间件解析请求体
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());

// 注册
app.post('/register', async (req, res) => {
  const { username, password } = req.body;
  const hashedPassword = await bcrypt.hash(password, saltRounds); // 对密码进行加密
  const user = new User({ username, password: hashedPassword });
  try {
    await user.save();
    res.send('注册成功');
  } catch (err) {
    console.error(err);
    res.status(500).send('注册失败');
  }
});

// 登录
app.post('/login', async (req, res) => {
  const { username, password } = req.body;
  const user = await User.findOne({ username });
  if (!user) {
    res.status(401).send('用户名不存在');
  } else {
    const validPassword = await bcrypt.compare(password, user.password); // 和数据库中的密码作比较
    if (validPassword) {
      res.send('登录成功');
    } else {
      res.status(401).send('密码错误');
    }
  }
});

// 监听端口
app.listen(5000, () => {
  console.log('Server started on port 5000');
});

上述代码中,我们使用 bcrypt 库对用户的密码进行了加密,对于注册和登录请求,可以分别通过 /register/login 的接口来实现。在 /login 接口中,我们也使用 bcrypt 库对明文密码进行加密,并将加密后的密码与数据库中的加密密码进行比较,从而实现登录。

4. 设计前端页面

最后,我们来设计前端页面,包括注册页面和登录页面。这里提供一个简单的示例页面:

<!DOCTYPE html>
<html>

<head>
  <meta charset="UTF-8">
  <title>登录/注册页</title>
</head>

<body>
  <h1>注册</h1>
  <form action="/register" method="POST">
    <label for="username">用户名:</label>
    <input type="text" name="username" required>
    <br>
    <label for="password">密码:</label>
    <input type="password" name="password" required>
    <br>
    <input type="submit" value="注册">
  </form>

  <br>

  <h1>登录</h1>
  <form action="/login" method="POST">
    <label for="username">用户名:</label>
    <input type="text" name="username" required>
    <br>
    <label for="password">密码:</label>
    <input type="password" name="password" required>
    <br>
    <input type="submit" value="登录">
  </form>
</body>

</html>

我们通过 HTML 设计了一个包含注册和登录的页面,在表单中分别输入用户名和密码,然后通过 POST 请求将数据发送给后端接口。

至此,我们就成功实现了一个简单的登录注册功能。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:node.js实现简单登录注册功能 - Python技术站

(0)
上一篇 2023年5月16日
下一篇 2023年5月16日

相关文章

  • MongoDB中文档的更新操作示例详解

    我将为您详细讲解“MongoDB中文档的更新操作示例详解”: MongoDB中文档的更新操作示例详解 1. 更新所有符合条件的文档中的特定字段 如果要更新MongoDB中所有符合条件的文档中的特定字段,可以使用以下语法: db.collection.update( <query>, <update>, { multi: true //…

    MongoDB 2023年5月16日
    00
  • MongoDB数据库常用的10条操作命令

    MongoDB是一款非关系型数据库,它的操作命令与关系型数据库有所不同。下面是MongoDB数据库常用的10条操作命令的完整攻略。 1. 连接MongoDB数据库 命令:mongosh 使用此命令后,将进入到MongoDB命令行界面。 2. 显示MongoDB版本 命令:db.version() 该命令将会返回MongoDB当前的版本号。 3. 创建数据库 …

    MongoDB 2023年5月16日
    00
  • Windows下MongoDb简单配置教程

    首先我们要明确一下,MongoDB是一种非关系型数据库,支持高性能、高可用性和可扩展性,比较适合存储大量的非结构化或半结构化数据,如文档、图像、音频、视频等。 下面我来详细讲解一下如何在Windows下进行MongoDB的简单配置: 步骤一:下载MongoDB 首先需要从MongoDB官网进行下载,地址如下:https://www.mongodb.com/d…

    MongoDB 2023年5月16日
    00
  • Zabbix3.4监控mongodb数据库状态的方法

    下面我将为你详细讲解“Zabbix3.4监控mongodb数据库状态的方法”的完整攻略,同时给出两条示例说明。 1. 安装zabbix-agent 首先,在mongodb服务器中安装zabbix-agent。具体方法可以参考zabbix官方文档,这里不再赘述。 2. 配置zabbix-agent 在mongodb服务器中,打开zabbix-agent配置文件…

    MongoDB 2023年5月16日
    00
  • MongoDB数据库权限管理详解

    MongoDB数据库权限管理详解 前言 在使用 MongoDB 进行数据存储时,尤其是在生产环境中,数据库的安全性至关重要。为了提高 MongoDB 数据库的安全性,需要进行严格的权限管理。 权限管理方式 MongoDB 提供以下两种权限管理方式: 基于角色的访问控制 基于资源的访问控制 基于角色的访问控制 基于角色的访问控制是 MongoDB 较早引入的一…

    MongoDB 2023年5月16日
    00
  • 实战分布式医疗挂号系统之设置微服务接口开发模块

    实战分布式医疗挂号系统之设置微服务接口开发模块 在分布式医疗挂号系统中,微服务是一个非常重要的模块。微服务通常被设计成独立的模块,可以轻松地扩展和维护。本文将介绍如何设置微服务接口开发模块。 环境准备 操作系统:Windows、Linux或MacOS 编程语言:Java 开发工具:IntelliJ IDEA 服务端框架:Spring Boot 微服务框架:S…

    MongoDB 2023年5月16日
    00
  • 详解mongodb 主从配置

    让我为您详细讲解“详解mongodb 主从配置”的完整攻略。 MongoDB主从配置详解 在MongoDB中,主从配置提供了一个高可用性和可扩展性的解决方案。主从复制是指将数据从一个MongoDB服务器同步到其他多个MongoDB服务器。我们可以将主服务器用于写操作,将从服务器用于读取和分担主服务器的读取压力。 步骤 配置主服务器 在主服务器中运行Mongo…

    MongoDB 2023年5月16日
    00
  • 阿里云服务器部署mongodb的详细过程

    下面是阿里云服务器部署MongoDB的详细过程: 准备工作 1.购买云服务器 首先需要在阿里云官网购买一台云服务器,可以根据需求选择不同的配置。例如可以选择CentOS 7.6系统。 2.打开服务器端口 默认情况下,阿里云服务器可能会禁止所有端口的访问,所以需要打开相应端口。在阿里云服务器控制台中选择安全组,点击进入相应安全组,然后在右侧的操作栏中选择添加安…

    MongoDB 2023年5月16日
    00
合作推广
合作推广
分享本页
返回顶部