缺少Illuminate \ Auth \ AuthManager :: createDriver()流明和JWT的参数1

时间:2015-10-04 10:30:00

标签: php laravel authentication jwt lumen

我正在尝试使用Lumen + JWT在我的API中实现JWT令牌。我正在使用此JWT Library,我已经设置了它,但是当我想使用JWTAuth::attempt($credentials)验证传递时,我会收到下一个错误

ErrorException in AuthManager.php line 16:
Missing argument 1 for Illuminate\Auth\AuthManager::createDriver(), called in /home/admin/web/mkopilka.ru/public_html/api/referral/vendor/illuminate/support/Manager.php on line 87 and defined

我知道问题在哪里,但无法弄清楚如何解决它,因为我不太了解框架的内部结构。

我对JWT如何对用户进行身份验证有疑问(检查数据库中的凭据,因为我可以说它使用jwt.php中提供的模型类,并使用以下行'user' => 'App\Models\User'

默认情况下'user' => 'App\User'

因此,即使我在此文件中更改了用户模型,我也收到了下一个错误

vendor/illuminate/auth/EloquentUserProvider.php line 126:
Class '\App\User' not found

我想并决定添加带有后续内容的config / auth.php文件

return [
    'model' => 'App\Models\User'
 ];

现在我得到了第一个例外。

有什么问题我可以告诉我已经覆盖了auth配置文件中的所有参数。

Aslo我想知道我在哪里可以找到(除了源代码,需要花费大量时间来理解它)解释JWTAuth::attempt如何工作?

感谢。

2 个答案:

答案 0 :(得分:2)

我自己也有同样的问题,偶然发现了这个问题。

解决方案是将'driver' => 'eloquent'添加到您创建的 auth.php 文件中。

答案 1 :(得分:2)

我在从Laravel 4.1升级到4.2时遇到了同样的问题(我认为主要是因为我更新了所有文件并尝试在之后进行作曲家更新)。

对我来说,以下工作(如恢复相关的更新步骤):

1。修改auth.php

将驱动程序,模型和表添加到config / auth.php主数组(另外到provider子数组中已存在的那个):

<?php

return [

    'driver' => 'eloquent',
    'model' => App\User::class,
    'table' => 'users',

    // ...

2。添加ArtisanServiceProvider

为防止错误 Artisan:未定义明确编译的命令已向服务提供商读取Illuminate\Foundation\Providers\ArtisanServiceProvider

<?php

return [

    // ...

    'providers' => [

        /*
         * Laravel Framework Service Providers...
         */
        Illuminate\Foundation\Providers\ArtisanServiceProvider::class,

        // ...

3。更新并还原更改

执行更新(composer update)并通过删除添加的行来恢复前两个步骤。