Laravel 5 JWTGenerateCommand::handle()不存在
我正在使用Laravel5.4和库进行API开发中的用户身份验证。安装后,当我运行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
php artisan jwt:generate
时,它会向我抛出以下错误
Method Tymon\JWTAuth\Commands\JWTGenerateCommand::handle() does not exist
知道我遗漏了什么吗?更改供应商文件夹中的任何内容都不是一个好主意,但是有两种方法可以解决这个问题
在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
'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
'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.*”,然后继续第二步和第三步