невозможно получить значение декодированных данных base64 в узле - PullRequest
0 голосов
/ 15 февраля 2019

это значение было закодировано в base64

    {
     a: "008078888658936",
     b: "REA"
    }

и было декодировано с использованием этого кода

    var mytokenvalue = "ewphOiAiMDA4MDc4ODg4NjU4OTM2IiwKYjogIlJFQSIKfQ=="
    let decoded = Buffer.from(token, 'base64')

между тем, когда я пытаюсь получить декодированное значение

console.log(decoded.a)

Я получаю неопределенное в моей консоли.Пожалуйста, помогите

Ответы [ 2 ]

0 голосов
/ 16 февраля 2019

Вы можете сделать:

    var token = "ewphOiAiMDA4MDc4ODg4NjU4OTM2IiwKYjogIlJFQSIKfQ==";
    eval('var decoded = ' + Buffer.from(token, 'base64').toString());
    console.log(decoded.a);

Но eval чрезвычайно опасно, если строка в кодировке base64 может прийти откуда-то, что находится вне вашего контроля.Произвольная строка может расшириться до некоторого неожиданного JavaScript, который заставит eval сделать что-то, из-за чего ваша программа будет плохо себя вести или нарушит безопасность.

Было бы лучше выразить исходный объект в виде строки JSON (используйте JSON.stringify, чтобы сделать это) и base64-кодировать эту строку.Затем вы можете использовать JSON.parse, чтобы восстановить исходный объект, не рискуя использовать eval.Как это:

    var obj = { x: "foo", y: 123 };
    var obj_json = JSON.stringify(obj);
            // obj_json is '{"x":"foo","y":123}'
    var obj_b64 = Buffer(obj_json).toString('base64');
            // obj_b64 is 'eyJ4IjoiZm9vIiwieSI6MTIzfQ=='
    var decoded = JSON.parse(Buffer.from(obj_b64, 'base64').toString());        
    console.log(decoded.x);
0 голосов
/ 15 февраля 2019

Возможно, вам потребуется вернуть декодированное значение в виде строки с .toString().

let token = "ewphOiAiMDA4MDc4ODg4NjU4OTM2IiwKYjogIlJFQSIKfQ==";
let decoded = Buffer.from(token, 'base64').toString();
console.log(decoded);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...