欢迎各位兄弟 发布技术文章
这里的技术是共享的
关闭Milos0110 打开了这个问题
大家好, 正确输入了立面和服务提供商,它们是有效的。 对于那些努力使它起作用的人,我也可以建议一种解决方案。转到位于vendor / tymon / src / Commands中的JWTGenerateCommand.php文件,并粘贴这部分代码 我知道这不是一个很好的解决方案,但它可以工作。我希望这可能会有所帮助,直到正式修复。 祝你今天愉快。
我尝试运行时遇到一个问题,我php artisan jwt:generate
收到反射异常,说“ [ReflectionException]方法Tymon \ JWTAuth \ Commands \ JWTGenerateCommand :: handle()不存在”
public function handle() { $this->fire(); }
我猜这已经由#1255解决了。
Acho quenãofoi。
我刚刚将此软件包添加到了我的Laravel 5.5项目中 作曲家: 在应用程序配置中添加了以下内容: 提供者 别名 然后: 错误:"tymon/jwt-auth": "0.5.*"
Tymon\JWTAuth\Providers\JWTAuthServiceProvider::class,
'JWTAuth' => Tymon\JWTAuth\Facades\JWTAuth::class,
'JWTFactory' => Tymon\JWTAuth\Facades\JWTFactory::class,
php artisan jwt:generate
[ReflectionException]
Method Tymon\JWTAuth\Commands\JWTGenerateCommand::handle() does not exist
此问题的PR已合并到develop
分支中。
尝试composer require tymon/jwt-auth:dev-develop --prefer-source
为服务提供商,您需要检查docs
分支。
@ Milos0110 public function handle() { $this->fire(); }
为我工作。谢谢!
我认为弄乱图书馆不是一个好主意。宁可尝试 并更新 如果行 否则,添加 然后使用实现composer require tymon/jwt-auth:dev-develop --prefer-source
jwt.php
从config文件夹中删除(如果已安装以前的版本)文件,然后尝试php artisan vendor:publish
。它将列出所有可能发布的配置。您需要选择JWT。config/app.php
为Tymon\JWTAuth\Providers\JWTAuthServiceProvider::class
存在,请更新到Tymon\JWTAuth\Providers\LaravelServiceProvider::class
Tymon\JWTAuth\Providers\LaravelServiceProvider::class
User
模型JWTSubject
并实现以下功能:public function getJWTIdentifier()
{
return $this->getKey();
}
public function getJWTCustomClaims()
{
return [];
}
加法public function handle() { $this->fire(); }
或加法composer require tymon/jwt-auth:dev-develop --prefer-source
对我都没有用。我在建423
使用dev-develop
版本对我在Laravel 5.5.4上有效。生成密钥的命令已从更改jwt:generate
为jwt:secret
。
我做了@tijanmdr所说的,然后jwt:secret并工作了。
@Onyekam之后 然后按照上述步骤操作。:)composer require tymon/jwt-auth:dev-develop --prefer-source
,jwt.php
从config
文件夹中删除文件,然后尝试php artisan vendor:publish
。它将列出所有可能发布的配置。您需要选择JWT。
公共功能handle(){$ this-> fire(); }这对我有用。谢谢@ Milos0110
为什么不应该将fire()重命名为handle()?我做到了,一切正常。
@ jaksa-m是的。我已将重命名为fire,现在可以处理。
fire()
正常handle()
工作。谢谢@ jaksa-m
handle(){$ this-> fire()}对我有用。
干得好@ Milos0110
不要什么@tijanmdr建议,只记得试图拉的最新版本与作曲家事先取出app.php服务提供商和所有的别名。它可以100%工作。
trollid 提到了这个问题
有人会更新文档以反映这一点吗?
谢谢@ Milos0110。
为什么他们没有添加此功能?并要求它!
@ Milos0110优秀
handle(){$ this-> fire()}对我有用。做了把戏!谢谢哥们上帝保佑你@ Milos0110
jwt:generate调用的命令函数句柄()在新版已经没有了,在新版中的函数是fire();所以修改vendor / tymon / jwt-auth / src / Commands / JWTGenerateCommand.php文件,类中间添加语句 public function handle() 再次运行则解决上述问题。
{
$ this-> fire();
}
我写了这个小命令,将所有fire()重命名为handle()。运行它之后,该命令将正常运行。find ./vendor -type f \( -name '*Command.php' \) -exec grep -q 'fire()' {} \; ! -exec grep -q 'handle()' {} \; -print0 | xargs -0 sed -i 's@function fire(@function handle(@g'
不要搞乱外部库。只需使用dev版本作为@lomholdt提及。
该文档非常清楚。请访问该网站以获取Laravel的最新版本。另外,将版本2的候选发布版本用于Laravel 5.6。 这里还有一个使用此软件包的不错的教程:https : //blog.pusher.com/build-rest-api-laravel-api-resources/
jkamphausen 推动了对参考此问题的StudyBucket / laravel-jwt的提交 Set up Tymon\JWTAuth
87eb8e9
开始另一个Laravel项目令人沮丧,而这仍然在dev分支上...
由于我不喜欢搞乱软件包的源代码,并且不喜欢从develop分支中提取代码,所以我将其与许多不同的功能混淆了,因此我决定创建句柄函数,以在您运行php artisan jwt:generate
命令
Run时将php artisan make:command NAME
其命名并根据需要命名-您可以在应用程序/控制台/命令,然后将其打开,然后在“ handle()”函数中粘贴此部分代码,$this->fire();
用此类use Tymon\JWTAuth\Commands\JWTGenerateCommand as Command;
和中提琴替换扩展类Command
@ islam-moneer这样做的时候我出错了The "show" option does not exist.
@ Milos0110谢谢,这对我有用
@aziev修复了““显示”选项不存在”。,在新的命令文件中.../**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'jwt:secret {--show}';
ahmedprog 向ahmedprog / jwt-auth添加了一个提交,该提交引用了此问题 Create JWTGenerateCommand.php
afd7f77
ahmedprog 提到了这个问题
要变通解决此问题,请创建一个默认类的类: 查找类JWTGenerateCommand(app / Console / Commands / JWTGenerateCommand):
运行命令:php artisan make:command JWTGenerateCommand
namespace App\Console\Commands;
use \Tymon\JWTAuth\Commands\JWTGenerateCommand as Command;
/**
* Class Wrapper para sobrescrever o erro gerado no momento de executar o comando jwt:generate
* @link https://github.com/tymondesigns/jwt-auth/issues/1298
*
* Class JWTGenerateCommand
* @author David Pereira
* @package App\Console\Commands
*/
class JWTGenerateCommand extends Command
{
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
/**
* Metodo chamado pelo framework no momento da execucao do comando
*/
public function handle()
{
$this->fire();
}
}`
``
After, update this file: app/Console/Kernel.php
Find to attribute $commands:
`protected $commands = [
\App\Console\Commands\JWTGenerateCommand::class,
];`
Save and execute command: php artisan key:generate
output: jwt-auth secret [1ih9dGbLsfCbvhWtaUYpmtH4gEQjE4wU] set successfully.
在最新的laravel上出现相同的错误。工作解决方案是 其中还包括自动发现等。也许可以创建一个新版本,因为使用dev-develop ist并不是安装软件包的好方法。composer require tymon/jwt-auth:dev-develop --prefer-source
转到JWTGenerateCommand.php并替换 对我来说效果很好。public function fire()
为public function handle()
还是个问题。我们无需更改JWTGenerateCommand.php
即可使其正常运行。重命名该fire()
方法可以handle()
正常工作,但不需要。
对于使用较新版本的Laravel(我猜为5.5+)的家伙,问题在于只需运行 您将获得基于0.5的版本,该版本与Laravel的最新版本在接口方面并不立即兼容(这就是为什么这么多人说重命名 为了解决这个问题(假设您已经安装了jwt库) 将您的composer.json上的条目更改为 跑 运行 然后你可以运行 比修改库源代码要耗费更多精力,但是避免了这种不好的做法(修改第三者代码)。composer require tymon/jwt-auth
fire
是handle
完成这项工作的原因)。"tymon/jwt-auth": "^1.0"
composer update
php artisan vendor:publish
并提供JWT软件包的编号(在我干净的Laravel 5.7安装中,这是第8个选项)php artisan jwt:secret
,以及
对于使用较新版本的Laravel(我猜为5.5+)的家伙,问题在于只需运行 您将获得基于0.5的版本,该版本与Laravel的最新版本在接口方面并不立即兼容(这就是为什么这么多人说重命名 为了解决这个问题(假设您已经安装了jwt库) 将您的composer.json上的条目更改为 跑 运行 然后你可以运行 比修改库源代码要耗费更多精力,但是避免了这种不好的做法(修改第三者代码)。 这行得通,谢谢。问题是您通过“ composer require tymon / jwt-auth”获得的软件包版本。composer require tymon/jwt-auth
fire
是handle
完成这项工作的原因)。"tymon/jwt-auth": "^1.0"
composer update
php artisan vendor:publish
并提供JWT软件包的编号(在我干净的Laravel 5.7安装中,这是第8个选项)php artisan jwt:secret
,以及
工作解决方案摘要: 作曲家需要“ tymon / jwt-auth”:“ ^ 1.0” 作曲家更新 php artisan vendor:publish(选择Tymon \ JWTAuth \ Providers \ LaravelServiceProvider) PHP的工匠JWT:秘密 该解决方案的优点是您不必手动将类添加到config / app.php文件
我认为现在很清楚软件包的更新版本是可行的:)
tymondesigns 关闭了
所以它仍然无法正常工作?对于1.0版,它说:“您的要求无法解决为一组可安装的软件包。” 表示它还在开发中?
您正在使用哪个版本的Laravel @vedmant?您必须具体说明在Composer中添加的版本。如果您仅添加^ 1.0,我认为它不起作用 例如,如果您使用的是Laravel 5.7,则必须添加 编辑:从头开始,经过测试,"tymon/jwt-auth": "1.0.0-rc.3",
;如果您使用的是5.8,则必须添加"tymon/jwt-auth": "1.0.0-rc.4.1",
"tymon/jwt-auth": "^1.0"
可以正常工作并安装最新的候选版本。至少在5.8上可以。如果作曲家告诉您您的部门有问题,则可能是由于另一个软件包造成的。在此处发布您的composer.json,我可以提供帮助
@ vesper8我使用Laravel 5.7,实际上我收到以下消息:“请求的程序包tymon / jwt-auth ^ 1.0是tymon / jwt-auth [1.0.0-alpha.2,1.0.0-alpha.3,1.0 .0-alpha1,1.0.0-beta.1,1.0.0-beta.2,1.0.0-beta.3,1.0.0-rc.1,1.0.0-rc.2,1.0.0-rc .3、1.0.0-rc.4、1.0.0-rc.4.1、1.0.x-dev],但这些与您的要求或最小稳定性冲突。” 这意味着没有稳定的1.0版本?我不会改变最低稳定度,因为它将影响其他软件包。 好的,我找到了如何安装它: composer require tymon/jwt-auth:^1.0@dev