Error: Authentication code missing (Mongoose-encryption)
Error: Authentication code missing (Mongoose-encryption)
我在登录注册用户时遇到此错误
当然,在使用 dotenv package 来保护我的数据库加密密钥
之后,我得到了这个错误
但是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()
(如果它是重要的东西,那么将它保存在安全的地方以便你可以再次使用它,如果你使用 Postman 应该很容易)
并重新创建您的数据库
实际上,问题是您可能正在对添加加密之前存储的数据使用新的加密,而如果您用新数据检查相同的数据,它会正常工作,因此您应该创建一个新的数据库,以便您在其中添加新项目,它有望为您工作。 :)
好吧,我遇到了同样的问题,但它只发生在您之前使用 mongoose-encryption 不使用 dotenv 存储在数据库中的数据中。
但是,它工作正常
- 当您通过注册为新用户创建新数据时。
- 删除数据库并创建一个新数据库。 (确保在执行之前保存数据)。
:)
您的系统上没有激活 MongoDB 服务器端口 27017。
为此,只需在超级终端的另一个选项卡中写入“mongod”命令即可。
原因是您可能更改了“加密密钥”。如果你能找到你一开始创建的那个,那么你仍然可以在你的(.js)文件中检查和使用这个数据库。但是,“错误:缺少身份验证码(猫鼬加密)”并不意味着您将其销毁。你还是可以用的。试试吧!
是的,
您应该尝试删除数据库一次并启动服务器 agein。
您可能在将加密“秘密”代码传输到 .env 文件时稍微更改了它。
在删除之前不要忘记备份。
我在登录注册用户时遇到此错误 当然,在使用 dotenv package 来保护我的数据库加密密钥
之后,我得到了这个错误但是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()
(如果它是重要的东西,那么将它保存在安全的地方以便你可以再次使用它,如果你使用 Postman 应该很容易)并重新创建您的数据库
实际上,问题是您可能正在对添加加密之前存储的数据使用新的加密,而如果您用新数据检查相同的数据,它会正常工作,因此您应该创建一个新的数据库,以便您在其中添加新项目,它有望为您工作。 :)
好吧,我遇到了同样的问题,但它只发生在您之前使用 mongoose-encryption 不使用 dotenv 存储在数据库中的数据中。 但是,它工作正常
- 当您通过注册为新用户创建新数据时。
- 删除数据库并创建一个新数据库。 (确保在执行之前保存数据)。 :)
您的系统上没有激活 MongoDB 服务器端口 27017。 为此,只需在超级终端的另一个选项卡中写入“mongod”命令即可。
原因是您可能更改了“加密密钥”。如果你能找到你一开始创建的那个,那么你仍然可以在你的(.js)文件中检查和使用这个数据库。但是,“错误:缺少身份验证码(猫鼬加密)”并不意味着您将其销毁。你还是可以用的。试试吧!
是的, 您应该尝试删除数据库一次并启动服务器 agein。
您可能在将加密“秘密”代码传输到 .env 文件时稍微更改了它。
在删除之前不要忘记备份。