Я работаю над проектом по изучению 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
Иногда это работает, но не другое. поэтому я не знаю, что мне делать. Я пробовал с
но проблема все еще существует, иногда я получаю хороший ответ от сервера (200), но большая часть тогда плохая (500).
Скриншоты


Проблема не в аутентификации. Эта ошибка появляется, когда я пытаюсь сделать class :: all (); метод в php: общедоступная функция all () {$ properties = Property :: with ('images') -> get (); return response () -> json (['properties' => $ properties], 200); }
Привет, @Esteban, у меня такая же проблема, ты нашел решение?
привет @MaxM. На самом деле нет, я все еще ищу!
У меня такая же проблема. Ошибка типа: аргумент 3, переданный в Lcobucci \ JWT \ Signer \ Hmac :: doVerify (), должен быть экземпляром Lcobucci \ JWT \ Signer \ Key, задано значение null, вызывается в \ vendor \ lcobucci \ jwt \ src \ Signer \ BaseSigner. php в строке 42 Появляется, когда я делаю много запросов (иногда это может быть с похожими параметрами)
Обычно это происходит, когда я задаю несколько запросов одновременно.






На самом деле это правильное решение:
php artisan key:generate
php artisan jwt:secret
Что случилось @Esteban?
@Esteban убедитесь, что у вас есть 'secret' => env('JWT_SECRET'), и 'passphrase' => env('JWT_PASSPHRASE'), в вашем config / jwt.php
@Esteban on lumen Мне не нужен файл config / jwt.php для работы при использовании пакета tymon / jwt-auth. На laravel это действительно нужно?
Попробуйте это: 1) php artisan cache: clear 2) php artisan config: clear 3) php artisan key: генерация 4) php artisan jwt: secret
Вот полный фрагмент
php artisan key:generate
php artisan jwt:secret
php artisan cache:clear
php artisan config:clear
Перед запуском вышеуказанных команд убедитесь, что установлен пакет jwt, а затем проверьте его имя файла конфигурации jwt.php в папке конфигурации.
Я столкнулся с этой ошибкой, когда развернул приложение после тестирования, а все остальное работало на локальном сервере.
Я заметил следующее;
Возможно, вы получаете эту ошибку, когда загружали приложения до реализации JWT и повторно загружали напрямую через загрузку Cpanel без повторной загрузки файла .env.
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 отсутствует на .envJWT_SECRET прокомментирован в .envJWT_SECRET неверно.В моем случае при запуске php artisan jwt:secret он добавлял ключ на текущий JWT_SECRET. Итак, проверяя мой файл .env, значение JWT_SECRET было очень длинным и неправильным (оно должно быть длиной 64 символа).
Чтобы решить эту проблему:
.env и удалите значение JWT_SECRET (обратите внимание, что вы должны удалить его, а не комментировать).php artisan jwt:secretphp 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
Можете ли вы показать код, в котором вы выполняете аутентификацию?