Nestjs: функция проверки не работает с jwt

Под капотом в CPython все указатель на PyObject . Подтип PyListObject имеет указатель на массив указателей на PyObjects среди его структурных полей.

Строки также являются подтипом PyObject, обычно реализованным в PyUnicodeObject . Аналогично списку, строка содержит указатель на буфер, содержащий его элементы.

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

  1. Указатель на объект списка
  2. Указатель на буфер списка
  3. Указатель на строковый объект
  4. Указатель на строковые данные

Вы можете сделать вывод, что ваш список буфер не может иметь [len('aaa') + len('bbb')] * size_of_char элементов по ряду причин.

  1. Все в Python - это объект, поэтому, по крайней мере, вам нужно иметь место для дополнительных метаданных.
  2. Списки могут содержать любой объект, а не только строки фиксированной длины. Как вы индексируете в список, где элементы имеют разные размеры?
  3. Символы могут иметь разные размеры в Юникоде. Количество байтов в строке и количество символов напрямую не связаны. Это возвращает нас как к # 1, так и к # 2.

В общем, если вам интересно узнать о внутренних функциях CPython, посмотрите в API docs , и исходный код .

2
задан Kim Kern 19 January 2019 в 13:37
поделиться

1 ответ

Метод validate вашего JwtStrategy будет вызываться только тогда, когда токен был проверен с точки зрения шифрования (для его подписи использовался правильный ключ, в вашем случае secretKey), и срок его действия не истек. Только после того, как эти две вещи были проверены, вызывается validate с полезной нагрузкой. С его помощью вы можете, например, проверьте, существует ли пользователь. Итак, три шага:

  1. Токен был подписан вашим секретным ключом
  2. Токен не истек
  3. Проверка пользовательской полезной нагрузки

Вы можете использовать отладчик jwt , чтобы вручную проверить шаги 1 и 2 для вашего токена.

0
ответ дан Kim Kern 19 January 2019 в 13:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: