我想在我的项目中测试JWTs的身份验证,因为JWTs将从应用程序外部发送,因此它们必须使用我的应用程序中的密钥进行签名。这个是可能的吗?有没有人知道有一个网站允许你使用秘密对令牌进行签名?
我尝试了http://jwtbuilder.jamiekurtz.com/,但是如果我输入由jwt:generate返回的密钥,JWT-auth仍然返回{"error":"token_invalid"}。这使我相信这个命令返回的密钥实际上不是用于在我的应用程序中签名JWTs的密钥。
我正在使用php artisan jwt:generate生成一个密钥,它返回以下内容:
jwt-auth secret [...] set successfully.但是它设置在哪里呢?我的.ENV文件中的JWT_SECRET变量没有改变,如果我在整个项目范围内搜索这个键,也找不到它。
此命令有效吗?
Laravel 5.3,jwt-auth 0.5.9。
发布于 2018-06-29 10:49:15
0.5.9和0.5.12中的最新测试表明,jwt:generate命令只会更改config/jwt.php中的值,因为它是正在使用的密钥。要亲自查看这一点,请将.env中的值设置为与config/jwt.php中的值相同,它会在您第一次运行它时更改配置中的值,但随后它将崩溃。
稍微搜索一下,就会发现开发人员没有计划在0.5版本中修复这个问题。*
我写了一个bash脚本(无可否认,只有一行),如果这个秘密不存在,它将在.env中创建它,或者更新所有出现的‘JWT_ 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发布于 2021-11-17 09:55:59
发布于 2017-01-20 18:36:38
从文档中:
不要忘记在配置文件中设置密钥!
由于您无法在搜索中找到密钥,因此我认为您实际上还没有发布配置:
php artisan vendor:publish --provider="Tymon\JWTAuth\Providers\JWTAuthServiceProvider"文档看起来很清楚,GitHub上的问题也没有提到你所遇到的问题,所以先看一眼,看看你是否跳过了这一步。发生在我们最好的人身上!https://github.com/tymondesigns/jwt-auth/wiki/Installation
https://stackoverflow.com/questions/41761451
复制相似问题