我想在我的项目中测试JWT的身份验证,因为JWT将从应用程序外部发送,因此必须使用我的应用程序中的密钥对它们进行签名。这可能吗?有没有人知道允许您使用秘密签署令牌的网站?
我尝试http://jwtbuilder.jamiekurtz.com/但是如果我输入{"error":"token_invalid"}
返回的密钥,JWT-auth会一直返回jwt:generate
。这让我相信这个命令返回的密钥实际上并不是用于在我的应用程序中签署JWT的密钥。
我正在使用php artisan jwt:generate
生成一个密钥,该密钥返回以下内容:
jwt-auth secret [...] set successfully.
但它在哪里设定?我的.ENV文件中的JWT_SECRET
变量不会更改,如果我执行项目范围内的搜索,则找不到它。
此命令有效吗?
Laravel 5.3,jwt-auth 0.5.9。
答案 0 :(得分:0)
最近在0.5.9和0.5.12中进行的测试表明jwt:generate
命令仅会更改config/jwt.php
IFF中的值,这是使用的密钥。要亲自查看,请将.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