Laravel 5 JWTGenerateCommand::handle()不存在

Laravel 5 JWTGenerateCommand::handle()不存在,laravel-5,jwt,Laravel 5,Jwt,我正在使用Laravel5.4和库进行API开发中的用户身份验证。安装后,当我运行php artisan jwt:generate时,它会向我抛出以下错误 Method Tymon\JWTAuth\Commands\JWTGenerateCommand::handle() does not exist 知道我遗漏了什么吗?更改供应商文件夹中的任何内容都不是一个好主意,但是有两种方法可以解决这个问题 自己生成一个随机字符串,只需更改JWT配置文件中的值 转到Tymon\JWTAuth\Comm

我正在使用Laravel5.4和库进行API开发中的用户身份验证。安装后,当我运行
php artisan jwt:generate
时,它会向我抛出以下错误

Method Tymon\JWTAuth\Commands\JWTGenerateCommand::handle() does not exist 

知道我遗漏了什么吗?

更改供应商文件夹中的任何内容都不是一个好主意,但是有两种方法可以解决这个问题

  • 自己生成一个随机字符串,只需更改JWT配置文件中的值

  • 转到Tymon\JWTAuth\Commands\JWTGenerateCommand并将fire方法更改为handle


  • 在laravel 5.5版本中安装jwt包时,通常会显示此错误。然后在设置服务提供程序并运行以下命令之后

    php artisan jwt:generate
    
    然后您在终端中看到了此错误消息

    如何解决?简单地遵循这个步骤

    步骤-1重新安装软件包

    composer require tymon/jwt-auth:dev-develop --prefer-source
    
    或者下面是使用laravel 6.X的新发布包

    composer require tymon/jwt-auth:1.0.*
    
    在此开发版本中,此错误已修复

    步骤2设置服务提供商

    'providers' => [
        ....
        Tymon\JWTAuth\Providers\JWTAuthServiceProvider::class to 
        Tymon\JWTAuth\Providers\LaravelServiceProvider::class
    ],
    
    步骤-3生成密钥

    php artisan jwt:secret
    

    我从这里找到了这个解决方案

    我可以建议一个解决方案。转到位于vendor/tymon/src/Commands中的JWTGenerateCommand.php文件,粘贴这部分代码公共函数handle(){$this->fire();}

    我知道这不是一个优雅的解决方案,但它是有效的。我希望这可能会有帮助,直到正式修复到达

    将此路径中的fire()函数更改为handle()
    vendor/tymon/jwt auth/src/commands/JWTGenerateCommand.php

    转到vendor/tymon/src/commands中的JWTGenerateCommand.php文件并粘贴此方法

    public function handle() { $this->fire(); }
    

    我发布这个答案是因为我不止一次在这个错误中崩溃

    我发现与Laravel 5.6配合使用的唯一解决方案如下:

    • 在composer.json中添加“tymon/jwt auth”:“1.0.0-rc.1”,并运行composer更新
    • 打开
      config/app.php
      并添加以下内容:
    config/app.php

     'providers' => [
       /*
       * JWT Service Provider...
       */
       Tymon\JWTAuth\Providers\LaravelServiceProvider::class,
     ],
     'aliases' => [
       'JWTAuth' => Tymon\JWTAuth\Facades\JWTAuth::class,
       'JWTFactory' => Tymon\JWTAuth\Facades\JWTFactory::class,
     ],
    
    'jwt' => Tymon\JWTAuth\Providers\JWT\Namshi::class,
    'auth' => Tymon\JWTAuth\Providers\Auth\Illuminate::class,
    'storage' => Tymon\JWTAuth\Providers\Storage\Illuminate::class,
    
    • 执行:

      php artisan供应商:publish--provider=“Tymon\JWTAuth\Providers\LaravelServiceProvider”

    • 最后,执行:
      php artisan jwt:secret

    在所有这些之后,当我点击我的端点进行登录时,我得到了以下异常:

    Class Tymon\JWTAuth\Providers\JWT\NamshiAdapter does not exist
    
    这是通过以下方式解决的:

    • 打开
      config/jwt.php
      并更改以下内容:
    config/jwt.php

     'providers' => [
       /*
       * JWT Service Provider...
       */
       Tymon\JWTAuth\Providers\LaravelServiceProvider::class,
     ],
     'aliases' => [
       'JWTAuth' => Tymon\JWTAuth\Facades\JWTAuth::class,
       'JWTFactory' => Tymon\JWTAuth\Facades\JWTFactory::class,
     ],
    
    'jwt' => Tymon\JWTAuth\Providers\JWT\Namshi::class,
    'auth' => Tymon\JWTAuth\Providers\Auth\Illuminate::class,
    'storage' => Tymon\JWTAuth\Providers\Storage\Illuminate::class,
    
    最后,请注意,为了工作,您的用户模型应定义如下:

    class User extends Authenticatable implements JWTSubject
    {
         ...
         public function getJWTIdentifier()
        {
            return $this->getKey();
        }
        public function getJWTCustomClaims()
        {
            return [];
        }
        ...
    }
    
    转到给定的文件路径

    vendor/tymon/jwt auth/src/Commands/JWTGenerateCommand.php

    更改函数名

    公共函数fire()到公共函数handle()

    运行命令:


    php artisan jwt:在文件路径:/vendor/tymon/jwt auth/src/Commands/JWTGenerateCommand.php中生成

    composer require tymon/jwt-auth:dev-develop --prefer-source
    
    增加公共功能

    public function handle()
    {
        $this->fire();
    }
    

    可能是您的解决方案可行,但理想情况下不建议编辑供应商/来源。这对我来说是可行的。但是@Chintan7027说的没错。目前第一步应该是“composer require tymon/jwt auth:1.0.*”,然后继续第二步和第三步