我想在我的项目中测试JWT的身份验证,因为JWT将从应用程序外部发送,因此必须使用我的应用程序中的 key 对它们进行签名。这可能吗?有谁知道一个允许您使用 secret 签名 token 的网站?
我尝试了http://jwtbuilder.jamiekurtz.com/,但是如果我输入{"error":"token_invalid"}
返回的 key ,那么JWT-auth会继续返回jwt:generate
。这使我相信此命令返回的 key 实际上不是在我的应用程序中用于签名JWT的 key 。
我正在使用php artisan jwt:generate
生成一个 key ,该 key 返回以下内容:
jwt-auth secret [...] set successfully.
但是它在哪里设置?我的.ENV文件中的
JWT_SECRET
变量没有更改,并且如果我在项目范围内搜索该 key ,则找不到该 key 。这个命令有效吗?
Laravel 5.3,jwt-auth 0.5.9。
最佳答案
最近在0.5.9和0.5.12中进行的测试表明,jwt:generate
命令仅更改config/jwt.php
IFF中的值,这是使用的 key 。若要亲自查看,请将.env
中的值设置为与config/jwt.php
中的值相同,它将在首次运行时更改config中的值,但它将中断。
稍作搜索就表明开发者没有计划将其修复为0.5。*
我编写了一个(非常令人讨厌的单行)bash脚本,如果该脚本不存在,它将在.env中创建此JWT_SECRET或更新所有出现的'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