J'utilise Laravel 5.4 et JWT Auth Library pour l'authentification de l'utilisateur dans le développement de l'API. Après l’installation pendant que j’exécute php artisan jwt:generate
, il me renvoie une erreur de
Method Tymon\JWTAuth\Commands\JWTGenerateCommand::handle() does not exist
Une idée de ce qui me manque?
Cette erreur s’affiche généralement lorsque vous installez le package jwt dans la version de laravel 5.5. puis après avoir défini les fournisseurs de services et exécuté la commande suivante.
php artisan jwt:generate
alors vous avez vu ce message d'erreur dans le terminal.
comment le résoudre? simple suivez cette étape
Etape - 1 Réinstallez le package
composer require tymon/jwt-auth:dev-develop --prefer-source
dans cette version de développement, cette erreur a été corrigée.
Étape - 2 Définir le fournisseur de service
'providers' => [
....
Tymon\JWTAuth\Providers\JWTAuthServiceProvider::class to
Tymon\JWTAuth\Providers\LaravelServiceProvider::class
],
Etape - 3 Générer la clé
php artisan jwt:secret
j'ai trouvé cette solution à partir d'ici http://laravelcode.com/post/method-tymonjwtauthcommandsjwtgeneratecommandhandle-does-not-exist
Ce n'est jamais une bonne idée de changer quoi que ce soit dans le dossier du fournisseur, mais il y a deux façons de gérer cela ...
Générez vous-même une chaîne aléatoire et modifiez simplement la valeur dans le fichier de configuration JWT.
Accédez à Tymon\JWTAuth\Commands\JWTGenerateCommand et modifiez la méthode de tir à gérer.
Accédez au fichier JWTGenerateCommand.php situé dans vendor/tymon/src/Commands et collez cette méthode.
public function handle() { $this->fire(); }
aller au chemin du fichier donné
vendor/tymon/jwt-auth/src/Commandes/JWTGenerateCommand.php
changer le nom de la fonction
fonction publique incendie () à descripteur de fonction publique ()
commande d'exécution:
php artisan jwt: générer
Je publie cette réponse parce que je me suis planté plusieurs fois dans cette erreur.
La seule solution que j'ai trouvée qui fonctionne avec Laravel 5.6 est la suivante:
run composer update
config/app.php
et ajoutez ce qui suit: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,
],
Exécuter:
artisan vendeur php: publish --provider = "Tymon\JWTAuth\Providers\LaravelServiceProvider"
Enfin, exécutez: php artisan jwt:secret
Après tout cela, lorsque j'ai atteint mon ordinateur d'extrémité pour la connexion, j'ai obtenu l'exception suivante:
Class Tymon\JWTAuth\Providers\JWT\NamshiAdapter does not exist
Ceci a été corrigé par:
config/jwt.php
et modifiez les éléments suivants:config/jwt.php :
'jwt' => Tymon\JWTAuth\Providers\JWT\Namshi::class,
'auth' => Tymon\JWTAuth\Providers\Auth\Illuminate::class,
'storage' => Tymon\JWTAuth\Providers\Storage\Illuminate::class,
Enfin, notez que pour fonctionner, votre modèle d’utilisateur doit être défini comme suit:
class User extends Authenticatable implements JWTSubject
{
...
public function getJWTIdentifier()
{
return $this->getKey();
}
public function getJWTCustomClaims()
{
return [];
}
...
}
Changez la fonction fire () en handle () dans ce chemin Vendeur/tymon/jwt-auth/src/Commandes/JWTGenerateCommand.php
Je peux conseiller une solution. Accédez au fichier JWTGenerateCommand.php situé dans vendor/tymon/src/Commands et collez cette partie du code avec public function handle () {$ this-> fire (); }
Je sais que ce n'est pas une solution élégante, mais cela fonctionne. J'espère que cela pourra aider jusqu'à ce que le correctif officiel arrive.