我正在尝试在mongodb中加密我的数据。我使用的是mongoose加密插件,但我有如下错误:
“抛出新错误(‘必须提供options.secret或同时提供options.encryptionKey和options.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中执行了一些步骤,但是失败了。我是node和mongoose的新手。请帮帮我。不管怎样,谢谢你。
发布于 2016-04-27 13:26:09
您最初的错误是因为没有设置process.env.SOME_32BYTE_BASE64_STRING和process.env.SOME_64BYTE_BASE64_STRING。
您的第二个错误是因为var encKey = 'a2V5YWxpYXNpc3RoZWJlc3R3b3cqweda'和var sigKey = 'a2V5YWxpYXNpc3RoZWJlc3R3b3cqwedaa2V5YWxpYXNpc3RoZWJlc3R3b3cqweda'
分别无效的32BYTE_BASE64_STRING和64BYTE_BASE64_STRING。
要生成有效的字符串,可以使用crypto模块:
//32 bytes
require('crypto').randomBytes(32, function(err, buffer) {
var token = buffer.toString('base64');
});
//64 bytes
require('crypto').randomBytes(64, function(err, buffer) {
var token = buffer.toString('base64');
});发布于 2020-04-29 20:38:43
除了你创建的.env文件之外,除了你的javascript文件之外,什么都不应该出现。
这对我很有效。
发布于 2020-07-06 12:32:54
对于本地测试(不提交到git),您需要传入一个变量:
var encKey = "Thisisa32bytebasestring";
var sigKey = "Thisisa64bytebasestring";对于远程提交,您需要在.env文件中传递SOME_32BYTE_BASE64_STRING和SOME_32BYTE_BASE64_STRING的字符串变量:
var encKey = process.env.SOME_32BYTE_BASE64_STRING
var sigKey = process.env.SOME_64BYTE_BASE64_STRING您的.env文件应包含:
SOME_32BYTE_BASE64_STRING=Thisisa32bytebasestring
SOME_64BYTE_BASE64_STRING=Thisisa64bytebasestringhttps://stackoverflow.com/questions/36283058
复制相似问题