У меня есть приложение, где я пытаюсь зашифровать userID
перед отправкой его на клиентскую сторону. Причиной этого является, потому что я использую EJS как заманчивым двигатель, который означает, что у меня есть код, где я использую userID
так:Расшифровать данные в узле/express.js Маршрут
<body ng-init="getAllPosts('<%= user._id' %>)"></body>
Проблема с этим состоит в том, что когда кто-то «инспектировать элемент» на в любом браузере они могут видеть их userID
. См изображение ниже, например:
Чтобы устранить эту проблему, я начал шифрованной мой userID
, прежде чем я послал к клиенту, как s0:
app.get('/profile',isLoggedIn,function(req, res) {
var user = req.user;
var uid = encrypt(JSON.stringify(user._id));
res.render('profile.ejs', {
userID: uid
});
});
Это успешно шифрует идентификатор, как вы можно увидеть на изображениях ниже:
выпуска:
Проблема в том, что я могу успешно Расшифровать идентификатор, но даже после того, как расшифрованный это я не могу получить данные из базы данных. Я попробовал копировать, вставляя дешифрованный идентификатор в свой маршрут и получаю данные успешно. Как будто он не считывает дешифрованный идентификатор из переменной, но работает, когда копирует его сам.
Heres код:
app.get('/user/posts/:id', isLoggedIn, function(req, res){
var x = decrypt(req.params.id)
Posts.findOne({userID:x}, function(err, post){
if(err)
console.log(err);
else if(post){
res.json(post);
} else if(!post){
res.json({message: "No Posts document exists for this user"});
}
});
});
Вещь отметить, что переменная x
содержит расшифрованный ID является текстовой форме!
Просто для получения дополнительной информации здесь мои шифрованной & дешифрования функции:
//Encrypt Data
function encrypt(text){
var cipher = crypto.createCipher(algorithm,key)
var crypted = cipher.update(text, 'utf8', 'base64')
crypted += cipher.final('base64');
console.log("CRYPTED " + crypted);
return crypted;
}
//Decrypt Data
function decrypt(text){
var decipher = crypto.createDecipher(algorithm,key)
var dec = decipher.update(text, 'base64', 'utf8')
dec += decipher.final('utf8');
console.log("DECRYPTED " + dec);
return dec;
}
Выходной сигнал Расшифровать Функция: