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);
相关推荐
✎ ﹏梦醒͜ღ҉繁华落℘15 小时前
单片机基础知识---stm32单片机的优先级
stm32·单片机·mongodb
麦聪聊数据17 小时前
数据服务化时代:企业数据能力输出的核心路径
数据库
shushangyun_17 小时前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化
DARLING Zero two♡17 小时前
【MySQL数据库】数据类型与表约束
数据库·mysql
曹牧18 小时前
Oracle EXPLAIN PLAN
数据库·oracle
BD_Marathon18 小时前
SQL学习指南——视图
数据库·sql
活宝小娜18 小时前
mysql详细安装教程
数据库·mysql·adb
贤时间18 小时前
codex 助力oracle ebs 开发
数据库·oracle
JLWcai2025100918 小时前
铸造领域树脂砂轮|金利威多场景解决方案,20 + 配方覆盖全需求
mongodb·zookeeper·eureka·spark·rabbitmq·memcached·storm
秉承初心18 小时前
PostgreSQL 数据性能瓶颈突破实战
数据库·postgresql·oracle