Auth guard [:api] 没有定义?
Posted
技术标签:
【中文标题】Auth guard [:api] 没有定义?【英文标题】:Auth guard [:api] is not defined? 【发布时间】: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
。
【参考方案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');
);
);
【讨论】:
以上是关于Auth guard [:api] 没有定义?的主要内容,如果未能解决你的问题,请参考以下文章
在 laravel 8 中创建 auth guard 使用中间件
call_user_func_array() 期望参数 1 是一个有效的回调,类 'Illuminate\Auth\Guard' 没有方法 'attemp' - Laravel 中的 Auth