Php 传递给Lcobucci\Jwt\Signer\Hmac::doVerify()的Jwt身份验证错误参数3
我正在做一个学习laravel的项目,我在这里看到了一些使用jwt auth的教程。这是工作良好,但现在是显示一个错误并不总是,但我不知道为什么。就是这样: 传递给Lcobucci\JWT\Signer\Hmac::doVerify()的参数3必须是Lcobucci\JWT\Signer\Key的实例,给定null,在第42行的C:\xampp\htdocs\inmobiliaria\vendor\Lcobucci\JWT\src\Signer\BaseSigner.php中调用 有时它有效,但另一种无效。所以我不知道我能做什么。我试过了Php 传递给Lcobucci\Jwt\Signer\Hmac::doVerify()的Jwt身份验证错误参数3,php,laravel,authentication,jwt,Php,Laravel,Authentication,Jwt,我正在做一个学习laravel的项目,我在这里看到了一些使用jwt auth的教程。这是工作良好,但现在是显示一个错误并不总是,但我不知道为什么。就是这样: 传递给Lcobucci\JWT\Signer\Hmac::doVerify()的参数3必须是Lcobucci\JWT\Signer\Key的实例,给定null,在第42行的C:\xampp\htdocs\inmobiliaria\vendor\Lcobucci\JWT\src\Signer\BaseSigner.php中调用 有时它有效,但
事实上,解决这个问题是正确的:
php artisan key:generate
php artisan jwt:secret
下面是完整的片段
php artisan key:generate
php artisan jwt:secret
php artisan cache:clear
php artisan config:clear
在运行上述命令之前,请确保有安装jwt包,然后检查其配置文件夹中的配置文件名
jwt.php
。我在测试后部署应用程序时遇到了这个错误,其他一切都在本地服务器上正常工作
我注意到以下几点:
- 当您在实现JWT之前上载应用程序,并且在不重新加载.env文件的情况下直接通过Cpanel上载重新上载时,可能会出现此错误
- 如果是这种情况,解决这个问题的最简单方法就是在.env文件(底部)ef中添加JWT:key
希望这能有所帮助:)我在Hostinger共享主机上以一种与其他人解释的方式不同的方式解决了同样的问题。在共享主机上,用户将无法访问shell/cmd/ssh,无法访问服务器-因此我使用composer执行了这些命令-多亏了Ángel Carlos del Pozo Muela在中分享了另一个解决方案的想法,但在我的案例中也起到了作用 我已经用额外的值更新了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"
]
接下来,我使用Gong to hostinger file manager在.env文件中创建了一个新参数,并部署了更改
JWT_SECRET={{value}}
成功完成部署后-测试所有服务->所有服务开始正常工作-然后从composer.json中删除“pre-generate key”位并重新部署代码
php artisan jwt:secret
php artisan config:cache
这两个命令都足够了我正在使用应用程序平台-Digital Ocean
php artisan jwt:secret
为我做这件事->它只是生成了一个新的秘密,这就是问题所在(只需检查你的.env文件)当
.env
在JWT\u SECRET
.env
的值错误JWT_SECRET
php-artisan-jwt:secret
会在当前jwt\u secret
上追加密钥。因此,检查我的.env
文件时,JWT_SECRET
的值非常长且错误(应该是64个字符长)
要解决这个问题:
php artisan key:generate
php artisan jwt:secret
.env
并删除JWT_SECRET
值(请注意,您必须删除它,而不是对其进行注释)php artisan jwt:secret
如果您不记得将
JWT_SECRET
添加到Vapor使用的env
文件中,则在使用Laravel Vapor服务时也会发生这种情况
在这种情况下,只需下拉当前环境的.env
文件(在这种情况下为staging
):
vapor-env:pull staging
并向其添加JWT_SECRECT
行,然后按下:
vapor-env:push staging
然后重新部署。您可以在何处显示进行身份验证的代码吗?身份验证不是问题所在。当我尝试使class::all()时出现此错误;php中的方法:public function all(){$properties=Property::with('images')->get();return response()->json(['properties'=>$properties],200);}Hi@Esteban,我也有同样的问题,你找到解决方案了吗?Hi@MaxM。事实上不,我不知道,还在看!我也有同样的问题。类型错误:传递给Lcobucci\JWT\Signer\Hmac::doVerify()的参数3必须是Lcobucci\JWT\Signer\Key的实例,给定为空,在第42行的\vendor\Lcobucci\JWT\src\Signer\BaseSigner.php中调用。当我进行多次查询时会出现该参数(有时可能具有类似的参数)@Esteban发生了什么事?@Esteban请确保您的配置/JWT中有
'secret'=>env('JWT_secret'),
和'passphrase'=>env('JWT_passphrase'),
。php@Esteban在lumen上,当使用tymon/jwt auth包时,我不需要config/jwt.php文件来工作。在laravel上确实需要它吗?尝试以下操作:1)php artisan缓存:清除2)php artisan配置:清除3)php artisan密钥:生成4)php artisan jwt:secret