почему метод jwt.sign () работает только со строковым секретным ключом? - PullRequest
0 голосов
/ 22 января 2020

Я пытаюсь узнать JWT токен аутентификации, но у меня возникла проблема.

В моем коде эта строка работает нормально.

const token = jwt.sign({ foo: 'bar' }, 'ea7aae59cedb7346c');

Но эта строка не работает.

const token = jwt.sign({ foo: 'bar' }, ea7aae59cedb7346c);

Мне кажется, что когда я пытаюсь поместите секретный ключ аутентификации струи inline , не делая его строковым значением , он не работает.

Почему это происходит? В чем разница между stringified key value и regular key value в методе jwt.sign()?

Ответы [ 2 ]

1 голос
/ 07 февраля 2020
jwt.sign(payload, secretOrPrivateKey, [options, callback])

Источник

const token = jwt.sign ({foo: 'bar'}, 'shhhhh');

полезная нагрузка может быть литералом объекта, буфером или строкой, представляющей действительный JSON.

Так что в вашем случае вы передаете «полезную нагрузку» как объект, а «секретный» - это «тссс»

как согласно документации

secretOrPrivateKey - строка, буфер или объект, содержащий либо секрет для алгоритмов HMA C, либо закрытый ключ PEM для RSA и ECDSA.

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

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

hmacSha256(key, message) {}
1 голос
/ 07 февраля 2020

Спасибо, что задали этот вопрос. «secretOrPrivateKey - это строка, буфер или объект, содержащий секрет для алгоритмов HMA C или закрытый ключ PEM для RSA и ECDSA». как указано в https://www.npmjs.com/package/jsonwebtoken

Я поместил свой файл в .env, и он работает нормально. нравится. enter image description here

и ключ файла .env такой: enter image description here

...