Php 传递给Lcobucci\Jwt\Signer\Hmac::doVerify()的Jwt身份验证错误参数3

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中调用 有时它有效,但

我正在做一个学习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缓存:清除
  • php artisan配置:清除
  • php artisan jwt:秘密
  • 但问题仍然存在,有时我从服务器(200)得到了很好的答案,但大部分答案都是错误的(500)

    截图


    事实上,解决这个问题是正确的:

    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
    JWT_SECRET=roczauuldmpw5i40393372y98bewumqd9ls7uk8depr0giz6wiwb


    希望这能有所帮助:)

    我在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