使用 bcryptjs 依赖实现用户加密。
1. 安装依赖
npm install bcryptjs
2. 定义用户模型
创建一个 `userModel.js` 文件,在其中定义用户模型,并在保存用户信息时对密码进行加密
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);