我尝试在mongodb中加密我的数据。我使用mongoose-encryption插件,但是我遇到了这样的错误:
"抛出新错误('必须提供选项. secret或选项. encryptionKey和选项. signingKey');"
下面是我代码:
var UserSchema = new mongoose.Schema({
profile: ProfileSchema,
timeStamp: Date,
created: Date,
email: {
type: String,
sparse: true
},
username: {
type: String,
},
password: {
type: String,
}
})
var encKey = process.env.SOME_32BYTE_BASE64_STRING
var sigKey = process.env.SOME_64BYTE_BASE64_STRING
UserSchema.plugin(encrypt, { encryptionKey: encKey, signingKey: sigKey , encryptedFields: ['email']})
所以,我错过了什么在我的代码?我不知道这个错误。因为我只是以下步骤在here但失败。我是新的节点和 Mongoose 。请帮助我...谢谢无论如何...
9条答案
按热度按时间yjghlzjz1#
您最初的错误是因为
process.env.SOME_32BYTE_BASE64_STRING
和process.env.SOME_64BYTE_BASE64_STRING
未设置。第二个错误是因为
var encKey = 'a2V5YWxpYXNpc3RoZWJlc3R3b3cqweda'
和var sigKey = 'a2V5YWxpYXNpc3RoZWJlc3R3b3cqwedaa2V5YWxpYXNpc3RoZWJlc3R3b3cqweda'
分别为无效的32字节_BASE64字符串和64字节_BASE64字符串。
要生成有效的字符串,可以使用crypto模块:
wribegjk2#
发生此错误是因为您尚未安装npm的
.env
包。您应该首先安装dotenv
包,并在开始时要求在app.js中安装它npm install dotenv
require('dotenv').config();
现在您可以在.env文件中自定义密钥。
例如
jdg4fx2g3#
除了你的javascript文件应该与你创建的. env文件一起呈现。
这对我很有效。
uyto3xhc4#
对于本地测试(不要提交到git),你需要传入一个变量:
对于远程提交,您需要在
.env
文件中为SOME_32BYTE_BASE64_STRING
和SOME_32BYTE_BASE64_STRING
传递一个String变量:.env
文件应包含:brqmpdu15#
发生此错误是因为您尚未安装npm的.env包。您应该首先安装dotenv包,并在开始时在app.js中要求它
1.配置文件();//应用程序的顶部
gcxthw6b6#
1.通过npm安装dotenv:-
1.在.js文件中需要它:-
1.创建.env文件在你的项目文件夹:-
1.将下面的文本粘贴到.env文件中:-
1.在mongoose.model()上方的.js文件中写入以下代码,并将encryptingItem与您的项目放在一起:-
zpjtge227#
检查所需的名称变量:它应该是这样的:
以便与名称匹配:
你的constencrypt名称应该与userSchema匹配。plugin(encrypt,{}..)在这里我希望它能有所帮助。
j5fpnvbx8#
您可以使用名为
secret = "set it to any string you want"
的变量,然后将{secret:secret}
添加到UserSchema.plugin();
您可以在
mongoose-encryption
软件包文档中找到此文档pbwdgjma9#
在.env文件中,确保SOME_32BYTE_BASE64_STRING和SOME_64BYTE_BASE64_STRING的值括在“”内,例如
SOME_32BYTE_BASE64_STRING="ThisIsMyLittlesecret"