web-dev-qa-db-ja.com

JWTGenerateCommand :: handle()が存在しません

私はLaravel 5.4 and JWT Auth ライブラリをAPI開発のユーザー認証に使用しています。インストール後php artisan jwt:generateそれから私にエラーをスローします

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

私が欠けているものはありますか?

9
Chintan7027

このエラーは通常、jwtパッケージをlaravel 5.5バージョンでインストールした後、サービスプロバイダーを設定して次のコマンドを実行した後に表示されます。

php artisan jwt:generate

次に、ターミナルでこのエラーメッセージが表示されます。

それを解決する方法は?簡単なこのステップに従ってください

ステップ-1パッケージを再インストールします

composer require tymon/jwt-auth:dev-develop --prefer-source

この開発バージョンでは、このエラーが修正されました。

ステップ-2サービスプロバイダーの設定

'providers' => [
    ....
    Tymon\JWTAuth\Providers\JWTAuthServiceProvider::class to 
    Tymon\JWTAuth\Providers\LaravelServiceProvider::class
],

ステップ-3キーを生成します

php artisan jwt:secret

私はここからこの解決策を見つけました https://laravelcode.com/post/method-tymonjwtauthcommandsjwtgeneratecommandhandle-does-not-exist

25
Harsukh Makwana

Vendor/tymon/src/CommandsにあるJWTGenerateCommand.phpファイルに移動してこのメ​​ソッドを貼り付けます

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

ベンダーフォルダ内の何かを変更することは決して素晴らしい考えではありませんが、これに対処する方法は2つあります...

  1. 自分でランダムな文字列を生成し、JWT構成ファイルの値を変更するだけです。

  2. Tymon\JWTAuth\Commands\JWTGenerateCommandに移動し、fireメソッドを処理するように変更します。

3
user8584851

指定されたファイルパスに移動します

ベンダー/タイモン/jwt-auth/src/Commands/JWTGenerateCommand.php

関数名を変更する

public function fire()to public function handle()

コマンドを実行します:

php artisan jwt:generate

2
abhishek kumar

このエラーで何度もクラッシュしたため、この回答を公開しています。

Laravel 5.6で動作することがわかった唯一の解決策は次のとおりです。

  • 「tymon/jwt-auth」:「1.0.0-rc.1」をcomposer.jsonとrun composer updateに追加します
  • 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,
 ],
  • 実行:

    php職人ベンダー: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

'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 [];
    }
    ...
}
1

このパスでfire()関数をhandle()に変更しますvendor/tymon/jwt-auth/src/commands/JWTGenerateCommand.php

0
zia

私は1つの解決策をアドバイスすることができます。 vendor/tymon/src/CommandsにあるJWTGenerateCommand.phpファイルに移動し、コードのこの部分を貼り付けますpublic function handle(){$ this-> fire(); }

私はこれがエレガントな解決策ではないことを知っていますが、それは機能します。公式の修正が到着するまで、これが役立つことを願っています。

詳細はこちらをご覧ください

0
Irony Stack