首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用jwt-auth在Laravel中正确设置JWT密钥?

如何使用jwt-auth在Laravel中正确设置JWT密钥?
EN

Stack Overflow用户
提问于 2017-01-20 18:31:47
回答 3查看 16.5K关注 0票数 5

我想在我的项目中测试JWTs的身份验证,因为JWTs将从应用程序外部发送,因此它们必须使用我的应用程序中的密钥进行签名。这个是可能的吗?有没有人知道有一个网站允许你使用秘密对令牌进行签名?

我尝试了http://jwtbuilder.jamiekurtz.com/,但是如果我输入由jwt:generate返回的密钥,JWT-auth仍然返回{"error":"token_invalid"}。这使我相信这个命令返回的密钥实际上不是用于在我的应用程序中签名JWTs的密钥。

我正在使用php artisan jwt:generate生成一个密钥,它返回以下内容:

代码语言:javascript
复制
jwt-auth secret [...] set successfully.

但是它设置在哪里呢?我的.ENV文件中的JWT_SECRET变量没有改变,如果我在整个项目范围内搜索这个键,也找不到它。

此命令有效吗?

Laravel 5.3,jwt-auth 0.5.9。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 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 =’:

代码语言:javascript
复制
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
票数 0
EN

Stack Overflow用户

发布于 2021-11-17 09:55:59

只需运行以下命令:

php artisan jwt:secret

Reference

票数 1
EN

Stack Overflow用户

发布于 2017-01-20 18:36:38

从文档中:

不要忘记在配置文件中设置密钥!

由于您无法在搜索中找到密钥,因此我认为您实际上还没有发布配置:

代码语言:javascript
复制
php artisan vendor:publish --provider="Tymon\JWTAuth\Providers\JWTAuthServiceProvider"

文档看起来很清楚,GitHub上的问题也没有提到你所遇到的问题,所以先看一眼,看看你是否跳过了这一步。发生在我们最好的人身上!https://github.com/tymondesigns/jwt-auth/wiki/Installation

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41761451

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档