Express + MongoDB 实现新增用户密码加密

使用 bcryptjs 依赖实现用户加密。

1. 安装依赖

bash 复制代码
npm install bcryptjs

2. 定义用户模型

创建一个 `userModel.js` 文件,在其中定义用户模型,并在保存用户信息时对密码进行加密

javascript 复制代码
const mongoose = require("mongoose");

const bcrypt = require("bcryptjs");

// 定义用户信息的 Schema

const userSchema = new mongoose.Schema({

  username: {

    type: String,

    required: true,

    unique: true,

  },

  password: {

    type: String,

    required: true,

  },

});

// 在保存用户信息前对密码进行加密

userSchema.pre("save", async function (next) {

  const user = this;

  // 只有当密码字段被修改时才进行加密操作

  if (!user.isModified("password")) return next();

  // 生成盐,盐的复杂度为 10

  const salt = await bcrypt.genSalt(10);

  // 使用盐对密码进行哈希处理

  const hash = await bcrypt.hash(user.password, salt);

  // 将加密后的密码赋值给用户的密码字段

  user.password = hash;

  next();

});

// 定义一个比较密码的方法

userSchema.methods.comparePassword = async function (candidatePassword) {

  return await bcrypt.compare(candidatePassword, this.password);

};

// 创建用户模型

module.exports = new mongoose.model("User", userSchema);
相关推荐
FirstFrost --sy几秒前
MySQL数据类型详解
数据库·mysql
fy121635 分钟前
MySQL篇(管理工具)
数据库·mysql
SelectDB14 分钟前
PostgreSQL + Apache Doris:构建用于实时分析的 HTAP 架构
大数据·数据库·数据分析
Riden刘17 分钟前
SQL里怎么存变量?怎么优雅处理递归?不妨了解下CTE!
数据库·sql
2401_8732046522 分钟前
使用Scrapy框架构建分布式爬虫
jvm·数据库·python
阿蒙Amon25 分钟前
C#常用类库-详解JetBrains.Annotations
前端·数据库·c#
m0_7166670728 分钟前
工具、测试与部署
jvm·数据库·python
2501_9454248034 分钟前
构建一个基于命令行的待办事项应用
jvm·数据库·python
内网渗透43 分钟前
Komari 部署教程:无数据库、单文件、Docker 一键启动的监控工具
数据库·docker·容器·内网穿透·cpolar·远程办公·komari
未来龙皇小蓝1 小时前
【MySQL-索引调优】08:模糊查询与索引
数据库·mysql·性能优化