【问题标题】:Auth guard driver [api] is not defined未定义身份验证驱动程序 [api]
【发布时间】:2017-11-11 22:21:11
【问题描述】:

我正在使用 laravel 5.4jwt auth jwt 版本为jwt-auth "tymon/jwt-auth": "0.5.*"

在 auth.php 我有

'guards' => [
        'web' => [
            'driver' => 'session',
            'provider' => 'users',
        ],

        'api' => [
            'driver' => 'jwt',
            'provider' => 'users',
        ],
    ],

在 Api.php 我有

 Route::post('/login','HomeController@authenticate');


Route::group(['prefix' => 'v2','middleware' => 'auth:api',], function () {

    // Authentication Routes...
   Route::get('/logout','HomeController@logout');
Route::get('/home','HomeController@home');

});

当我从邮递员那里发布电子邮件和密码时,它将返回令牌。

当我尝试访问时

http://localhost/demo/public/api/v2/home

并且标头我通过了授权承载令牌

我在邮递员中收到以下错误

哎呀,好像出了点问题。 (1/1) InvalidArgumentException 未定义身份验证保护驱动程序 [api]。在 AuthManager->resolve('api') 中的 AuthManager.php(第 99 行) AuthManager->guard('api') 中的 AuthManager.php(第 70 行) Authenticate->authenticate(array('api')) 处的 Authenticate.php(第 61 行)

可以帮我解决一下吗

我还检查了自 2016 年 9 月 27 日的旧问题以来的以下问题 https://github.com/tymondesigns/jwt-auth/issues/860

【问题讨论】:

    标签: php laravel laravel-5.3 jwt


    【解决方案1】:

    确保在您的 kernel.php 文件中声明了它

     protected $routeMiddleware = 

    【讨论】:

    • 这并不能解决问题
    【解决方案2】:

    尝试设置token:

    'guards' => [
            'web' => [
                'driver' => 'session',
                'provider' => 'users',
            ],
    
            'api' => [
                'driver' => 'token', // here !
                'provider' => 'users',
            ],
        ],
    

    【讨论】:

      【解决方案3】:

      不一定是答案,但这是我使用过几次来安装和设置 JWT 令牌的文章,我没有遇到任何问题。

      https://medium.com/employbl/build-authentication-into-your-laravel-api-with-json-web-tokens-jwt-cd223ace8d1a

      希望这会有所帮助,祝你好运!

      【讨论】:

        【解决方案4】:

        我通过将此行添加到 config\app.php 中的提供程序解决了这个问题

           'providers' => [
               ...
            Tymon\JWTAuth\Providers\LaravelServiceProvider::class,
           ]
        

        【讨论】:

          【解决方案5】:

          如果API 保护不存在,则可能会发生错误。为了解决这个问题,你必须设置API 保护

          root->config->auth.php [line:38]
          

          如下

          'guards' => [
                  'web' => [
                      'driver' => 'session',
                      'provider' => 'users',
                  ],
          
                  'api' => [
                      'driver' => 'token', // make sure to add token on API driver
                      'provider' => 'users',
                  ],
              ],
          

          来自默认注册表单的请求将有以下输入

          local.DEBUG: array (
            '_token' => 'J0FzfW7huNaJxcUZnjYXF9g63OOiSHaH9vZSBc73', // token is required from the request
            'name' => 'mygem',
            'phone' => '+1 (484) 853-6668',
            'email' => 'cyvu@mailinator.com',
            'password' => 'Pa$$w0rd!',
            'password_confirmation' => 'Pa$$w0rd!',
          )  
          

          【讨论】:

            【解决方案6】:

            我遇到了同样的问题。我通过添加解决了它

            "tymon/jwt-auth": "^1.0"
            

            composer.jsonrequire array 中,然后运行composer install

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2019-05-11
              • 2017-07-25
              • 2021-09-08
              • 1970-01-01
              • 2017-03-14
              • 2015-11-21
              • 2017-01-04
              • 1970-01-01
              相关资源
              最近更新 更多