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是一款基于文档存储的数据库,与传统的关系型数据库(如MySQL、Oracle等)相比,具有以下的特色: 数据存储采用BSON格式,支持丰富的数据类型,如日期、二进制数据、正则表达式等; 支持数据的分片和复制,具备高可用性和可扩展性; 支持基于索引的高效查询和聚合操作; 提供丰富的API和开发工具支持,如Mong…

    MongoDB 2023年5月16日
    00
  • node连接MongoDB数据库错误:MongoServerSelectionError: connect ECONNREFUSED ::1:27017(解决方案)

    MongoDB是一种广泛使用的非关系型数据库,现在越来越多的应用程序都使用它来存储数据。Node.js是一种非常受欢迎的服务器端JavaScript框架,它可以很容易地与MongoDB集成。 然而,在使用Node.js连接MongoDB时,经常会遇到“MongoServerSelectionError: connect ECONNREFUSED ::1:27…

    MongoDB 2023年5月16日
    00
  • Mongodb启动命令参数中文说明

    下面我详细讲解一下“Mongodb启动命令参数中文说明”的完整攻略。 MongoDB启动命令参数中文说明 在使用MongoDB时,我们常需要在启动命令中加入一些参数,来控制MongoDB的启动和运行。下面是对这些参数进行中文说明的攻略: 基础参数 –bind_ip: 指定MongoDB绑定的IP地址,默认为0.0.0.0; –port: 指定MongoD…

    MongoDB 2023年5月16日
    00
  • MongoDB删除集合

    删除MongoDB中的集合可以使用db.collection.drop()方法。这个方法可以接收一个留给可选参数的布尔值,指定是否完成删除集合的同时也删除了它的索引。 下面是删除一个名为 ‘myColl’ 的集合的代码示例: db.myColl.drop() 如果需要强制删除操作,则可以使用{force:true}选项: db.myColl.drop({fo…

    MongoDB 2023年3月14日
    00
  • MongoDB社区版和企业版的差别对照表

    下面是关于“MongoDB社区版和企业版的差别对照表”的详细讲解。 MongoDB社区版和企业版差别对照表 功能 社区版 企业版 备份 支持 支持 安全加固 部分支持 全面支持 安全认证 部分支持 全面支持 监控工具 不支持 支持 SDK支持 开源SDK支持 全部官方支持 数据库加密 不支持 支持 数据库管理工具 不支持 支持 数据库自动分片 不支持 支持 …

    MongoDB 2023年5月16日
    00
  • MongoDB性能优化及监控

    MongoDB性能优化及监控 1. 优化查询操作 在实际使用中,经常会遇到查询操作比较慢的情况。针对这种情况,我们可以采取以下措施: 索引优化 防止全表扫描,建立索引能够加快查询速度。 考虑使用组合索引,以最大限度减少索引占用空间。 查询条件优化 避免使用复杂的正则表达式。 尽量避免像 $where 这样引入自定义代码的操作。 确保查询语句的优化,如利用游标…

    MongoDB 2023年5月16日
    00
  • 在Linux服务器中配置mongodb环境的步骤

    在Linux服务器中配置MongoDB环境的步骤如下: 步骤一:添加MongoDB软件库 在 Linux 中添加 MongoDB 软件库,用于安装,更新或卸载 MongoDB: sudo apt-key adv –keyserver hkp://keyserver.ubuntu.com:80 –recv 7F0CEB10 sudo echo "…

    MongoDB 2023年5月16日
    00
  • Go经典面试题汇总(填空+判断)

    Go经典面试题汇总(填空+判断)是一道比较全面、适合初学和面试准备的练习题目。以下是该题目攻略的详细讲解。 题目类型 该题目类型是填空和判断两种,填空题目需要填写代码,判断题目需要回答True或False。 题目数量 该题目共有30个,共包含25个填空题目和5个判断题目。 题目难度 该题目的难度为中等,对于有一定 Go 编程经验的开发人员比较适合。同时,这些…

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