Auth guard [:api] 未定义?
Auth guard [:api] is not defined?
当我使用 auth api gaurd 作为注销路由时。我面临以下异常
Auth guard [:api] 未定义
我已经实现了注册登录 Apis,但是我在注销 api 时遇到了这个错误,我使用 auth::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');
});
});
我应该可以注销用户
你的代码中有一个额外的冒号,这就是它试图找到守卫的原因 :api
。
根据 docs:
Middleware parameters may be specified when defining the route by
separating the middleware name and parameters with a :. Multiple
parameters should be delimited by commas:
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');
});
});
我遇到了同样的问题,我好像忘了更改身份验证默认值
所以在 config/auth.php 中更改此
'defaults' => [
'guard' => 'web',
....
],
进入这个
'defaults' => [
'guard' => 'api',
....
],
如果您正在使用 Laravel 9+
和 Passport
,您需要在 config/auth.php
文件的 guard
数组中实现:
'guards' => [
...
// you need to implement this
'api' => [
'driver' => 'passport',
'provider' => 'users',
'hash' => true,
],
],
当我使用 auth api gaurd 作为注销路由时。我面临以下异常
Auth guard [:api] 未定义
我已经实现了注册登录 Apis,但是我在注销 api 时遇到了这个错误,我使用 auth::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');
});
});
我应该可以注销用户
你的代码中有一个额外的冒号,这就是它试图找到守卫的原因 :api
。
根据 docs:
Middleware parameters may be specified when defining the route by separating the middleware name and parameters with a :. Multiple parameters should be delimited by commas:
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');
});
});
我遇到了同样的问题,我好像忘了更改身份验证默认值 所以在 config/auth.php 中更改此
'defaults' => [
'guard' => 'web',
....
],
进入这个
'defaults' => [
'guard' => 'api',
....
],
如果您正在使用 Laravel 9+
和 Passport
,您需要在 config/auth.php
文件的 guard
数组中实现:
'guards' => [
...
// you need to implement this
'api' => [
'driver' => 'passport',
'provider' => 'users',
'hash' => true,
],
],