Когда вы кодируете JWT, в большинстве библиотек автоматически добавляется поле «iat» (выпущено_ в основном отметка времени, на которой был создан токен).Это означает, что одна и та же полезная нагрузка с одним и тем же секретом и алгоритмом, независимо от библиотеки, не будет одинаковой, если вы дважды ее закодируете.Это может объяснить, почему вы получаете разные закодированные значения.
Вот как это должно работать по проекту .Единственный способ проверить, является ли jwt действительным, состоит не в сравнении его с выданным вами jwt, а в расшифровке его с вашим секретом (который знает только вы, сервер).
Кроме того, помимо фактачто дротик jwt не проверяется, полезная нагрузка вашего дротика jwt не совпадает с полезной нагрузкой с узла jwt .Вы также можете проверить, почему это так, потому что это также объясняет, почему токен отличается!
Насколько я понимаю, ваша функция декодирования верна.Вы должны попробовать это, чтобы увидеть, что конкретно не так с вашим токеном:
try {
const decoded = jwt.verify(code2,secret);
}
catch(err) {
console.log(err);
}
Кроме того, токен от dart выглядит в кодировке base64, поэтому следующий код может решить вашу проблему: jwt.verify(Buffer.from(code2, 'base64'), secret)
.