我有一个名为‘Mongoose-Encryption’的NPM包的问题。这是我的代码。
main().catch((err) => console.log(err));
async function main() {
await mongoose.connect('mongodb://localhost:27017/userEncryptedDB', { useNewUrlParser: true });
}
const userSchema = new mongoose.Schema({
email: String,
password: String
});
const secret = 'xxs4Ox4nSKSVnJzIxzy+es6ouOmoMcqcarAnEVRP26Q=';
userSchema.plugin(encrypt, {secret: secret, encryptedFields: ['password']});
const User = mongoose.model('User', userSchema);
现在,如果我不使用这个包,注册和登录到网站正常工作,但如果我使用插件,它会显示“您从未注册!”即使我注册了电子邮件和密码...
app.post('/login', (req, res) => {
const email = req.body.username;
const password = req.body.password;
User.findOne({email: email, password: password}, (err, user) => {
if(err) {
console.error(err);
} else {
if(user){
console.log('You are already registered!');
res.render('secrets');
} else {
console.error('You are never registered!');
}
}
});
});
我到底做错了什么?我启动了电脑,停止了数据库,重新启动了它。注册已成功完成,但当我尝试登录页面时,页面仍在滚动...如果我不使用Mongoose加密,一旦我输入密码,登录页面就可以正常工作。
我可以清楚地看到,新用户名被添加到数据库中,如下所示:
{ "_id" : ObjectId("616a4aa45dfbf877d9f92468"), "email" : "aras@aras.com", "_ct" : BinData(0,"YbVYW9Pi6dz1yqRD7XgcEyEp48lLGVjp3J40ZgxGt/YuA8+eyiyebMaO9AGdygBj6A=="), "_ac" : BinData(0,"YQiV2QvS9AyrE1hjm81x5U8K6+0lT8h1ruxtCEZv/iwZWyJfaWQiLCJfY3QiXQ=="), "__v" : 0 }
但当我尝试登录时,它无法找回密码。在本例中,我使用的密码是“1”。
1条答案
按热度按时间mnemlml81#
尝试删除集合(首先将其保存在某个位置以备后用),然后重试。看起来不错!