我想在我的项目中测试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

10-08 13:50
查看更多