Ошибка аутентификации Jwt. Аргумент 3 передан в Lcobucci \ JWT \ Signer \ Hmac :: doVerify ()

Я работаю над проектом по изучению laravel, я видел пару руководств по использованию jwt auth в этом. Он работал хорошо, но теперь не всегда выдает ошибку, но я не знаю почему. это оно:

Argument 3 passed to Lcobucci\JWT\Signer\Hmac::doVerify() must be an instance of Lcobucci\JWT\Signer\Key, null given, called in C:\xampp\htdocs\inmobiliaria\vendor\lcobucci\jwt\src\Signer\BaseSigner.php on line 42

Иногда это работает, но не другое. поэтому я не знаю, что мне делать. Я пробовал с

  1. php artisan cache: очистить
  2. Конфигурация php artisan: очистить
  3. php artisan jwt: секрет

но проблема все еще существует, иногда я получаю хороший ответ от сервера (200), но большая часть тогда плохая (500).

Скриншоты

Ошибка аутентификации Jwt. Аргумент 3 передан в Lcobucci \ JWT \ Signer \ Hmac :: doVerify ()

Ошибка аутентификации Jwt. Аргумент 3 передан в Lcobucci \ JWT \ Signer \ Hmac :: doVerify ()

Можете ли вы показать код, в котором вы выполняете аутентификацию?

petersowah 19.11.2018 22:52

Проблема не в аутентификации. Эта ошибка появляется, когда я пытаюсь сделать class :: all (); метод в php: общедоступная функция all () {$ properties = Property :: with ('images') -> get (); return response () -> json (['properties' => $ properties], 200); }

Esteban 20.11.2018 23:05

Привет, @Esteban, у меня такая же проблема, ты нашел решение?

Max M. 27.11.2018 12:28

привет @MaxM. На самом деле нет, я все еще ищу!

Esteban 28.11.2018 15:21

У меня такая же проблема. Ошибка типа: аргумент 3, переданный в Lcobucci \ JWT \ Signer \ Hmac :: doVerify (), должен быть экземпляром Lcobucci \ JWT \ Signer \ Key, задано значение null, вызывается в \ vendor \ lcobucci \ jwt \ src \ Signer \ BaseSigner. php в строке 42 Появляется, когда я делаю много запросов (иногда это может быть с похожими параметрами)

Oleksii.B 17.12.2018 13:57

Обычно это происходит, когда я задаю несколько запросов одновременно.

Oleksii.B 17.12.2018 15:05
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
31
6
23 503
9
Перейти к ответу Данный вопрос помечен как решенный

Ответы 9

На самом деле это правильное решение:

php artisan key:generate
php artisan jwt:secret

Что случилось @Esteban?

Tiago Gouvêa 19.12.2018 10:39

@Esteban убедитесь, что у вас есть 'secret' => env('JWT_SECRET'), и 'passphrase' => env('JWT_PASSPHRASE'), в вашем config / jwt.php

Kirill Oficerov 22.12.2018 11:49

@Esteban on lumen Мне не нужен файл config / jwt.php для работы при использовании пакета tymon / jwt-auth. На laravel это действительно нужно?

Tiago Gouvêa 16.01.2019 19:54

Попробуйте это: 1) php artisan cache: clear 2) php artisan config: clear 3) php artisan key: генерация 4) php artisan jwt: secret

Bobby Axe 06.08.2019 16:31
Ответ принят как подходящий

Вот полный фрагмент

php artisan key:generate
php artisan jwt:secret
php artisan cache:clear
php artisan config:clear

Перед запуском вышеуказанных команд убедитесь, что установлен пакет jwt, а затем проверьте его имя файла конфигурации jwt.php в папке конфигурации.

Я столкнулся с этой ошибкой, когда развернул приложение после тестирования, а все остальное работало на локальном сервере.

Я заметил следующее;

  • Возможно, вы получаете эту ошибку, когда загружали приложения до реализации JWT и повторно загружали напрямую через загрузку Cpanel без повторной загрузки файла .env.

    • если это так, самый простой способ решить эту проблему - просто добавить ключ JWT: в ваш файл .env (внизу) ef

JWT_SECRET = roCZauuldMpw5i403939393939393372y98bEWumqd9ls7Uk8DEpr0gIZ6WIWB

Надеюсь это поможет :)

Я решил то же самое на Hostinger - Shared Hosting немного иначе, чем объясняли другие. На виртуальном хостинге у пользователя не будет доступа к серверу shell / cmd / ssh - поэтому я выполнил команды с помощью композитора - Спасибо Анхелю Карлосу дель Посо Муэла за то, что он поделился идеей в https://stackoverflow.com/a/48682668 для другого решения, но в моем случай и здесь

Я обновил тег скрипта composer.json >> дополнительными значениями.

"scripts": {
    "pre-generate-key": [
        "@php artisan key:generate",
         "@php artisan cache:clear",
        "@php artisan config:clear"
    ],"post-autoload-dump": [
        "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
        "@php artisan package:discover --ansi"
    ]

Затем я создал новый параметр в файле .env, используя файловый менеджер hostinger, и развернул изменения.

 JWT_SECRET = {{value}}

при успешном завершении развертывания - Протестировано все службы -> все службы начали работать нормально - затем я удалил бит «pre-generate-key» из composer.json и повторно развернул код

php artisan jwt:secret
php artisan config:cache

Этих обеих команд будет достаточно

Я работаю над платформой приложений - Digital Ocean php artisan jwt:secret делает это за меня -> он просто генерирует новый секрет, и это то, что бесполезно (просто проверьте свой файл .env)

Эта ошибка может возникнуть, когда

  • JWT_SECRET отсутствует на .env
  • JWT_SECRET прокомментирован в .env
  • Значение JWT_SECRET неверно.

В моем случае при запуске php artisan jwt:secret он добавлял ключ на текущий JWT_SECRET. Итак, проверяя мой файл .env, значение JWT_SECRET было очень длинным и неправильным (оно должно быть длиной 64 символа).

Чтобы решить эту проблему:

  1. Откройте .env и удалите значение JWT_SECRET (обратите внимание, что вы должны удалить его, а не комментировать).
  2. Запускаем php artisan jwt:secret
  3. Запускаем php artisan cache:clear && php artisan config:clear

Это также может произойти при использовании службы Laravel Vapor, если вы не забыли добавить JWT_SECRET в файл env, используемый Vapor.

В этом случае просто потяните файл .env для текущей среды (в данном случае staging):

vapor env:pull staging

и добавьте к нему строку JWT_SECRECT с последующим нажатием:

vapor env:push staging

и повторно развернуть.

У меня была эта проблема с моими Laravel 8.x и PHP 7.4, поэтому я решил проблему, обновив свои ключи только с помощью следующих команд:

php artisan key:generate
php artisan jwt:secret

Другие вопросы по теме