Вы можете сделать:
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);