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);
相关推荐
癫狂的兔子3 分钟前
【Python】【爬虫】爬取虎扑网NBA排行数据
数据库·爬虫·python
迷路剑客21 分钟前
ES-7.10-高亮HighLight知识点总结
java·数据库·mybatis
程序边界25 分钟前
解锁时序数据新玩法:金仓数据库实战体验分享
数据库
汉堡go37 分钟前
python_chapter6
前端·数据库·python
范纹杉想快点毕业37 分钟前
嵌入式工程师一年制深度进阶学习计划(纯技术深耕版)
linux·运维·服务器·c语言·数据库·算法
storyseek42 分钟前
关于Milvus向量数据库的基础
数据库·milvus
步步为营DotNet1 小时前
深入探究.NET中Stream:灵活高效的数据流处理核心
服务器·数据库·.net
❀͜͡傀儡师1 小时前
基于提供的镜像构建PostGIS、pgvector 的 PostgreSQL 18镜像的Dockerfile
数据库·postgresql·postgis
消失的旧时光-19431 小时前
第五课:数据库不是存数据那么简单 —— MySQL 与索引的后端视角
数据库·mysql
nice_lcj5202 小时前
MySQL中GROUP_CONCAT函数详解 | 按日期分组拼接销售产品经典案例
数据库·mysql