我正在研究一个学习laravel的项目,我看到了一些使用jwt auth
的教程。它运行良好,但现在并不总是显示错误,但我不知道为什么。就是这样:
传递给Lcobucci \ JWT \ Signer \ Hmac :: doVerify()的参数3必须是Lcobucci \ JWT \ Signer \ Key的实例,给定为null,在C:\ xampp \ htdocs \ inmobiliaria \ vendor \ lcobucci \中调用第42行的jwt \ src \ Signer \ BaseSigner.php
有时它可以工作,但不可以。所以我不知道该怎么办。我尝试过
但是问题仍然存在,有时我从server(200)那里得到了很好的答案,但是大部分时候还是很糟糕(500)。
屏幕截图
答案 0 :(得分:1)
实际上这是解决问题的正确方法:
php artisan jwt:secret
答案 1 :(得分:1)
这个错误可能发生在
HANDLE hFile = CreateFile( fileName, // lpFileName
READ_CONTROL, // dwDesiredAccess
0, // dwShareMode
NULL, // lpSecurityAttributes
OPEN_EXISTING, // dwCreationDisposition
FILE_FLAG_BACKUP_SEMANTICS, // dwFlagsAndAttributes
NULL ); // hTemplateFile
在 JWT_SECRET
.env
在 JWT_SECRET
.env
的值有误。就我而言,运行 JWT_SECRET
是在当前 php artisan jwt:secret
上附加密钥。所以检查我的 JWT_SECRET
文件,.env
的值很长而且错误(应该是 64 个字符长)。
解决:
JWT_SECRET
并删除 .env
值(请注意,您必须将其删除而不是注释)。JWT_SECRET
答案 2 :(得分:0)
完整的代码段
php artisan key:generate
php artisan jwt:secret
php artisan cache:clear
php artisan config:clear
在运行上述命令之前,请确保已安装jwt软件包,然后在配置文件夹中检查其配置文件名称jwt.php
。
答案 3 :(得分:0)
在测试后部署我的应用程序时,我遇到了此错误,其他所有内容在本地服务器上均正常运行。
我注意到以下情况;
在实现JWT之前上传应用程序并通过Cpanel上传直接重新上传而不重新上传.env文件时,可能会收到此错误。
JWT_SECRET = roCZauuldMpw5i4039393939393372y98bEWumqd9ls7Uk8DEpr0gIZ6WIWB
希望这会有所帮助:)
答案 4 :(得分:0)
我已经在Hostinger上解决了相同的问题-共享主机与其他人解释的方式有些不同。在共享主机上,用户将无权访问shell / cmd / ssh对服务器的访问权限-因此,我已经使用composer执行了命令-感谢ÁngelCarlos del Pozo Muela在https://stackoverflow.com/a/48682668中分享了另一种解决方案的想法,但在我的情况下也是如此
我用额外的值更新了composer.json >>脚本标记
"scripts": {
"pre-generate-key": [
"@php artisan key:generate",
"@php artisan cache:clear",
"@php artisan config:clear"
],"post-autoload-dump": [
"Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
"@php artisan package:discover --ansi"
]
随后,我使用托管程序文件管理器在.env文件中创建了一个新参数,并部署了更改。
JWT_SECRET={{value}}
在成功完成部署后-测试了所有服务->所有服务开始正常运行-然后我从composer.json中删除了“ pre-generate-key”位,然后重新部署了代码
答案 5 :(得分:0)
php artisan jwt:secret
php artisan config:cache
这两个命令就足够了
答案 6 :(得分:0)
我在 App 平台上工作 - Digital Ocean php artisan jwt:secret
为我做这件事 -> 它只是生成了一个新的秘密,这就是问题所在(只需检查您的 .env 文件)
答案 7 :(得分:0)
如果您不记得将 JWT_SECRET
添加到 Vapor 使用的 env
文件中,也可能在使用 Laravel Vapor 服务时发生这种情况。
在这种情况下,只需为当前环境拉取 .env
文件(在本例中为 staging
):
vapor env:pull staging
并向其添加 JWT_SECRECT
行,然后推送:
vapor env:push staging
并重新部署。