【问题标题】:Auth guard [:api] is not defined?Auth guard [:api] 没有定义?
【发布时间】:2020-02-15 15:29:23
【问题描述】:

当我使用 auth api gaurd 进行注销路由时。我面临以下异常

身份验证保护 [:api] 未定义

我已经实现了注册登录 API,但是我在使用 auth::api 保护的注销 API 时遇到了这个错误

config.auth 文件



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

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

api.php


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

    Route::post('login','AuthController@login');
    Route::post('signup','AuthController@signup');

    Route::group(['middleware' => 'auth::api'], function () {
            Route::get('logout','AuthController@logout');
            Route::get('user','AuthController@user');
    });
});

我应该可以注销用户

【问题讨论】:

  • auth::api 不正确,去掉一个冒号auth:api

标签: php laravel api laravel-passport


【解决方案1】:

我遇到了同样的问题,好像我忘记更改身份验证默认值了 所以在 config/auth.php 中改变这个

    'defaults' => [
        'guard' => 'web',
        ....
    ],

进入这个

    'defaults' => [
        'guard' => 'api',
        ....
    ],

【讨论】:

    【解决方案2】:

    你的代码中有一个额外的冒号,这就是它试图找到守卫:api的原因。

    根据docs

    定义路由时可以指定中间件参数 用 : 分隔中间件名称和参数。多种的 参数应该用逗号分隔:

    Route::put('post/{id}', function ($id) {
        //
    })->middleware('role:editor');
    

    所以你的情况是:

    Route::group(['prefix' => 'auth'], function () {
        Route::post('login','AuthController@login');
        Route::post('signup','AuthController@signup');
    
        Route::group(['middleware' => 'auth:api'], function () {
            Route::get('logout','AuthController@logout');
            Route::get('user','AuthController@user');
        });
    });
    

    【讨论】:

      猜你喜欢
      • 2016-03-11
      • 2020-04-22
      • 2021-10-28
      • 2017-09-24
      • 1970-01-01
      • 2016-06-10
      • 1970-01-01
      • 2016-09-07
      • 2017-07-29
      相关资源
      最近更新 更多