Если вы читаете документы JWT, функция может работать в двух режимах: синхронно (синхронно) и асинхронно (асинхронно).Функция может автоматически решать, какой метод использовать, в зависимости от количества параметров и типа параметров, которые вы предоставляете функции, и параметров, которые вы можете предоставить (по порядку):
- Данные / полезная нагрузка
- Секретный ключ / токен
- Параметры / конфигурации (необязательно, здесь можно использовать обратный вызов, если вы используете параметры по умолчанию)
- Функция обратного вызова (необязательно, будет работать в асинхронном режиме, если выпредоставьте это)
Чтобы проиллюстрировать это, прочитайте код ниже:
// Synchronous
const syncToken = jwt.sign({payload: { x: 1, y: '2'}}, 'JWT_SECRET');
console.log(syncToken);
// Asynchronous
jwt.sign({payload: { x: 1, y: '2'}}, 'JWT_SECRET', (err, asyncToken) => {
if (err) throw err;
console.log(asyncToken);
});
Что касается секретного токена, просто создайте жестко закодированный без рандомизации, в противном случае выне смог бы постоянно проверять ваши токены, если это вообще возможно.Или, в качестве альтернативы, вы можете выполнять асимметричную подпись и проверку, используя такие алгоритмы, как RS256 или ES256 (используя пару открытого и закрытого ключей).
Надеюсь, этот ответ поможет.
Ссылка:https://github.com/auth0/node-jsonwebtoken