Как правильно установить секрет JWT в Laravel с помощью jwt-auth?

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

Я старался http://jwtbuilder.jamiekurtz.com/ но JWT-auth продолжает возвращаться {"error":"token_invalid"} если я введу ключ, который был возвращен jwt:generate, Это заставляет меня поверить, что ключ, возвращаемый этой командой, на самом деле не является ключом, используемым для подписи JWT в моем приложении.

я использую php artisan jwt:generate сгенерировать ключ, который возвращает следующее:

jwt-auth secret [...] set successfully.

Но где это установлено? JWT_SECRET переменная в моем файле .ENV не изменяется, и если я выполняю поиск ключа в проекте, он не найден.

Эта команда работает?

Laravel 5.3, jwt-auth 0.5.9.

2

Решение

Из документации:

Не забудьте установить секретный ключ в конфигурационном файле!

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

php artisan vendor:publish --provider="Tymon\JWTAuth\Providers\JWTAuthServiceProvider"

Документы кажутся достаточно ясными, и в проблемах GitHub не упоминаются проблемы, с которыми вы столкнулись, поэтому взгляните на них и посмотрите, не пропустили ли вы шаг. Случается с лучшими из нас! https://github.com/tymondesigns/jwt-auth/wiki/Installation

0

Другие решения

Недавние испытания в 0.5.9 и 0.5.12 показывают, что jwt:generate Команда ТОЛЬКО изменяет значение в config/jwt.php IFF это ключ в использовании. Чтобы убедиться в этом, установите значение в .env быть таким же, как в config/jwt.php и он изменит тот, что в конфиге, при первом запуске, но потом он сломается.

Немного поиска указывает, что у разработчика нет планов исправить это за 0.5. *

Я написал (по общему признанию довольно неуклюжий однострочный) bash-скрипт, который создаст этот JWT_SECRET в .env, если он не существует, или обновит все вхождения ‘JWT_SECRET =’:

env=".env"; secret="$(php artisan jwt:generate --show)"; oldsecrets="$(grep '^JWT_SECRET=' $env)"; if [ -z "$oldsecrets" ]; then sed -i "$ a JWT_SECRET=$secret" "$env"; else echo "$oldsecrets" | while IFS= read -r line ; do echo "$line"; sed -i -e "s/$line/JWT_SECRET=$secret/g" "$env"; done; fi
0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector