const adminsSchema = new mongoose.Schema({
username: String,
password: String,
});
const secret = "Thinkyoucancrackthisone";
adminsSchema.plugin(encrypt, {
secret: secret,
encryptedFields: ["password"]
});
const Admin = new mongoose.model("Admin", adminsSchema);
app.post("/register", function (req, res) {
const user = new Admin({
username: req.body.user,
password: req.body.pass
});
user.save(function (err) {
if (err) {
res.send(err);
} else {
res.send("Admin creds added successfully");
}
});
});
所以我得到的不是 5 个字段,而是 4 个没有用户名字段的字段
我针对不同的拼写错误尝试了不同的方法,例如排除加密之类的不同方法,但它不起作用。我什至尝试放弃重新开始收藏。
如果您使用的是 mongoose-cryption 库( https://www.npmjs.com/package/mongoose-encryption ),这可能就是问题所在。 据我所知,它用于加密整个文档。
尝试使用 mongoose-field-encryption 库(https://www.npmjs.com/package/mongoose-field-encryption)来加密特定字段。
另外:“始终将密钥和机密存储在版本控制之外,并与数据库分开。”
您可能已经知道这一点,并且只是为了示例而添加了秘密;但请记住不要将秘密直接放在源代码中。请改用环境变量之类的东西。
您能否分享更详细的代码部分? 还, 该模型。
Save()
方法不/不再接受回调。因此,继续进行异步等待或承诺处理。
app.post('/register', async (req, res) => {
const newUser = new User({
email: req.body.username,
password: req.body.password
});
try {
await newUser.save();
res.render('secrets.ejs');
} catch (err) {
console.error(err);
}
});