当登录一个注册用户时,我得到了这个错误当然,我得到了这个错误后,使用 点评 包裹 保护我的数据库加密密钥
不过 proccess.env.SECRET
准确地工作
我想我的问题在这里。
userSchema.plugin(encrypt, {
secret: process.env.SECRET,
encryptedFields: ["password"],
});
app.js :
require("dotenv").config();
const express = require("express");
const bodyParser = require("body-parser");
const ejs = require("ejs");
const mongoose = require("mongoose");
const encrypt = require("mongoose-encryption");
const app = express();
app.use(express.static("public"));
app.set("view engine", "ejs");
app.use(bodyParser.urlencoded({ extended: true }));
mongoose.connect("mongodb://localhost:27017/userDB", {
useUnifiedTopology: true,
useNewUrlParser: true,
});
const userSchema = new mongoose.Schema({
email: String,
password: String,
});
//_
// encrypting password field // |
userSchema.plugin(encrypt, { // | i guess problem is here
secret: process.env.SECRET, // |
encryptedFields: ["password"], //_|
});
const User = mongoose.model("User", userSchema);
错误。
Error: Authentication code missing
at Object.schema.methods.authenticateSync (C:\Users\Amir\Desktop\security\node_modules\mongoose-encryption\lib\plugins\mongoose-encryption.js:419:23)
at model.<anonymous> (C:\Users\Amir\Desktop\security\node_modules\mongoose-encryption\lib\plugins\mongoose-encryption.js:239:47)
at Kareem.execPreSync (C:\Users\Amir\Desktop\security\node_modules\kareem\index.js:115:16)
at model.syncWrapper [as $__init] (C:\Users\Amir\Desktop\security\node_modules\kareem\index.js:232:12)
at model.Document.init (C:\Users\Amir\Desktop\security\node_modules\mongoose\lib\document.js:513:8)
at completeOne (C:\Users\Amir\Desktop\security\node_modules\mongoose\lib\query.js:2853:12)
at model.Query.Query._completeOne (C:\Users\Amir\Desktop\security\node_modules\mongoose\lib\query.js:2094:7)
at Immediate.<anonymous> (C:\Users\Amir\Desktop\security\node_modules\mongoose\lib\query.js:2138:10)
at Immediate.<anonymous> (C:\Users\Amir\Desktop\security\node_modules\mquery\lib\utils.js:116:16)
at processImmediate (internal/timers.js:456:21)
你应该删除数据库中现有的文档,然后用一个空文档重新运行代码。
我有同样的问题,这对我来说是有效的。
导航到您的数据库,使用您的终端使用(因为我可以看到你使用mongo),例如:。show dbs
, use databaseName
, show collections
, db.databaseName.find()
然后
清空您的数据库 db.databaseName.drop()
如果是重要的东西,那就放在安全的地方,这样你就可以再次使用,如果你用邮递员的话,应该很容易)。
并重新建立你的数据库
事实上,问题是,你可能会使用你的新的加密数据,这是存储在添加加密之前,而如果你检查与新的数据一样,它将正常工作,因此,你应该创建一个新的数据库,以便你添加新的项目,它将有望为你工作。)