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);
相关推荐
草莓熊Lotso1 分钟前
MySQL 数据库基础入门:从概念到实战
linux·运维·服务器·数据库·c++·人工智能·mysql
mingdong06086 分钟前
MySQL 的mysql_secure_installation安全脚本执行过程介绍
数据库·mysql·安全
小小unicorn6 分钟前
[微服务即时通讯系统]3.服务端-环境搭建
数据库·c++·redis·微服务·云原生·架构
admin and root8 分钟前
记一次攻防演练redis未授权访问案例
网络·数据库·redis·安全·web安全·渗透测试·src漏洞挖掘
倔强的石头10613 分钟前
KWDB 3.1.0 智慧能源实战:构建城市级智能电表监测平台
数据库·能源·kwdb
Mr.朱鹏17 分钟前
分布式-redis哨兵模式架构
数据库·redis·分布式·spring·缓存·架构·java-ee
远方160919 分钟前
116-Oracle 26ai 断言(assertion)新特性
大数据·数据库·sql·oracle·database·ai编程
八月瓜科技20 分钟前
擎策·知海全球专利数据库 技术赋能检索 让科技创新少走弯路
大数据·数据库·人工智能·科技·深度学习·娱乐
南棱笑笑生25 分钟前
20260310解决瑞芯微原厂RK3576的Android14刷入乐晓电子的K7开发板后适配ADB连接
数据库·rockchip
兴通扫码设备25 分钟前
ocr工业场景适配升级:深圳市兴通物联XTC8501智能相机接口与环境适应性技术解析
数据库·人工智能·深度学习·数码相机·计算机视觉