Проблема с подключением к laravel api с помощью jwt при размещении на 000webhost

#php #laravel #api #jwt #shared-hosting

#php #laravel #API #jwt #общий хостинг

Вопрос:

я пытаюсь разместить проект на свободном уровне 000webhost и застрял на этой проблеме. Я искал везде, где мог, и до сих пор нет решения. Проект представляет собой laravel 5.7 api, использующий jwt для аутентификации, и отлично работает на localhost. я без проблем загрузил все на 000webhost и настроил базу данных с помощью этого.

Я знаю, что он запущен и работает в определенной степени, поскольку я могу получить доступ к index.php и это обнаруживается.(Это просто страница, на которой отображается «привет»).

Моя проблема в том, что когда я пытаюсь выполнить вызов конечной точки ‘/ api /showAuthUser’ с помощью postman, я получаю эту ошибку.

 Argument 3 passed to LcobucciJWTSignerHmac::doVerify() must be an instance of LcobucciJWTSignerKey, null given, called in /storage/ssd1/450/8968450/vendor/lcobucci/jwt/src/Signer/BaseSigner.php on line 42
  

Когда я пытаюсь выполнить вызов ‘/ api / login’ с помощью postman, я получаю эту ошибку.

 Argument 2 passed to LcobucciJWTSignerHmac::createHash() must be an instance of LcobucciJWTSignerKey, null given, called in /storage/ssd1/450/8968450/vendor/lcobucci/jwt/src/Signer/BaseSigner.php on line 34
  

Я уверен, что база данных подключена правильно, и у меня есть секрет jwt в файле .env. Я перепробовал все решения, которые смог найти в Интернете, но безрезультатно. Единственное, что я не пробовал, это запуск php artisan jwt:secret , поскольку я не могу запускать команды в 000webhost или я просто не знаю, как это сделать.

Извините, если этой информации недостаточно, но я новичок в API, и это моя последняя надежда. Спасибо.

Комментарии:

1. Этот пост может вам помочь . Показано, как шаг за шагом настроить проект laravel в 000webhost

2. Привет, спасибо за быстрый ответ. Я последовал этому руководству и сделал все, а также многое другое, показанное в нем. Это все еще не сработало. Я думаю, что моя проблема как-то связана с JWT, но я не знаю, как это исправить.

3. Существует ли ключ JWT_SECRET, сгенерированный внутри вашего локального env-файла? Попробуйте включить этот JWT_SECRET и ключ в env-файле в размещенный экземпляр.

4. Да, все ключи и секреты находятся в файлах, но я сгенерировал их на своем локальном компьютере. Я не могу запускать команды на сервере, поэтому не могу повторно запускать команды.

Ответ №1:

У вас есть jwt.php файл в вашей папке конфигурации (config/jwt.php). Здесь, пожалуйста, замените JWT_SECRET на сгенерированный вами секретный ключ jwt в вашем файле .env

В jwt.php файл

 'secret' => env('JWT_SECRET', 'PLACE YOUR JWT KEY HERE'),
  

Надеюсь, это решит вашу проблему

Комментарии:

1. Спасибо за ответ. Я отказался от использования 000webhost, поскольку у меня заканчивалось время. В итоге я использовал учетную запись godaddy, которая у меня была. Я использовал тот же код с теми же ключами, и там все работало нормально. Единственное отличие при загрузке в godaddy заключалось в том, что вместо простой загрузки файлов Laravel в корневой каталог, как показано здесь по ссылке , я поместил все файлы в папку с именами laravel. затем я поместил все файлы из public в public_html и изменил пути начальной загрузки к папке laravel. Надеюсь, я хорошо это объяснил.