Я хотел бы проверить аутентификацию 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.
Из документации:
Не забудьте установить секретный ключ в конфигурационном файле!
Поскольку вы не можете найти ключ в поиске, я думаю, что вы на самом деле не опубликовали конфигурацию:
php artisan vendor:publish --provider="Tymon\JWTAuth\Providers\JWTAuthServiceProvider"
Документы кажутся достаточно ясными, и в проблемах GitHub не упоминаются проблемы, с которыми вы столкнулись, поэтому взгляните на них и посмотрите, не пропустили ли вы шаг. Случается с лучшими из нас! https://github.com/tymondesigns/jwt-auth/wiki/Installation
Недавние испытания в 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