Mongoose 加密对这两个字段进行加密。我该怎么办?

问题描述 投票:0回答:2
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 个没有用户名字段的字段

我针对不同的拼写错误尝试了不同的方法,例如排除加密之类的不同方法,但它不起作用。我什至尝试放弃重新开始收藏。

node.js mongodb mongoose ejs mongoose-schema
2个回答
0
投票

如果您使用的是 mongoose-cryption 库( https://www.npmjs.com/package/mongoose-encryption ),这可能就是问题所在。 据我所知,它用于加密整个文档。

尝试使用 mongoose-field-encryption 库(https://www.npmjs.com/package/mongoose-field-encryption)来加密特定字段。

另外:“始终将密钥和机密存储在版本控制之外,并与数据库分开。”

您可能已经知道这一点,并且只是为了示例而添加了秘密;但请记住不要将秘密直接放在源代码中。请改用环境变量之类的东西。


0
投票

您能否分享更详细的代码部分? 还, 该模型。

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);
  }
});
© www.soinside.com 2019 - 2024. All rights reserved.