我正在使用Laravel 5.4和JWT Auth库进行API开发中的用户身份验证。在我正在运行php artisan jwt:generate
时安装后,它会抛出错误
Method Tymon\JWTAuth\Commands\JWTGenerateCommand::handle() does not exist
知道我错过了什么吗?
答案 0 :(得分:23)
在laravel 5.5版本中安装jwt软件包时,通常会显示此错误。然后在设置服务提供程序并运行以下命令之后。
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
我从这里找到了这个解决方案http://laravelcode.com/post/method-tymonjwtauthcommandsjwtgeneratecommandhandle-does-not-exist
答案 1 :(得分:3)
改变供应商文件夹中的任何内容绝不是一个好主意,但有两种方法可以解决这个问题...
自己生成一个随机字符串,只需更改JWT配置文件中的值。
转到Tymon \ JWTAuth \ Commands \ JWTGenerateCommand并更改要处理的fire方法。
答案 2 :(得分:3)
转到vendor / tymon / src / Commands中的JWTGenerateCommand.php文件并粘贴此方法
public function handle() { $this->fire(); }
答案 3 :(得分:2)
转到给定的文件路径
<强>供应商/ tymon / JWT-AUTH / SRC /命令/ JWTGenerateCommand.php 强>
更改功能名称
公共功能fire()到 公共功能句柄()
运行命令:
php artisan jwt:generate
答案 4 :(得分:1)
我发布这个答案是因为我在这个错误中崩溃了不止一次。
我发现它与Laravel 5.6一起使用的唯一解决方案如下:
run composer update
config/app.php
并添加以下内容:<强>配置/ 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 artisan vendor:publish --provider =“Tymon \ JWTAuth \ Providers \ LaravelServiceProvider”
最后,执行:php artisan jwt:secret
毕竟,当我点击我的端点登录时,我得到以下异常:
Class Tymon\JWTAuth\Providers\JWT\NamshiAdapter does not exist
这是通过以下方式解决的:
config/jwt.php
并更改以下内容:<强>配置/ 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 [];
}
...
}
答案 5 :(得分:0)
我可以建议一个解决方案。转到vendor / tymon / src / Commands中的JWTGenerateCommand.php文件并粘贴这部分代码public function handle(){$ this-&gt; fire(); }
我知道这不是一个优雅的解决方案,但它确实有效。我希望这可能会有所帮助,直到官方解决方案到来。
答案 6 :(得分:0)
将fire()函数更改为此路径中的handle() 供应商/ tymon / JWT-AUTH / SRC /命令/ JWTGenerateCommand.php
答案 7 :(得分:-2)
在文件路径中:/vendor/tymon/jwt-auth/src/Commands/JWTGenerateCommand.php
添加公共功能
[(ngModel)]="frm[c.condition]"