我已经使用默认的laravel配置进行了简单的身份验证。我的默认防护设置为web
防护。
'defaults' => [
'guard' => 'web',
'passwords' => 'users',
],
我的身份验证非常有效。现在,当我把这条路线。
Route::group(['middleware' => ['auth']], function () {
// Users
Route::get('users/me', 'UserController@me')->name('users.me');
//...below routes.
此路由返回异常unauthenticated
。但是,当我在中间件中通过auth:api
作为后卫时,它就可以工作。因此,我只想知道我的用户通过了哪种保护措施。由于提到默认值是web
,并且我还没有在laravel上添加guard()
方法来更改防护,所以为什么不采用默认Web值呢?是因为在api
路线中提到了它吗?如果是这样的话,当我没有通过该保护程序对用户进行身份验证时,它如何与auth:api
一起使用。
这是我的Web和api中间件组:
protected $middlewareGroups = [
'web' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
// \Illuminate\Session\Middleware\AuthenticateSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
\Laravel\Passport\Http\Middleware\CreateFreshApiToken::class,
],
'api' => [
'throttle:60,1',
'bindings',
'slowresponse',
],
];
将身份验证中间件附加到路由时,您还可以指定应使用哪个防护对用户进行身份验证。为此,您可以在控制器的构造函数中指定
public function __construct()
{
$this->middleware('auth:api');
}
或您可以在完成时在中间件中指定。有关信息,请参阅文档https://laravel.com/docs/5.7/authentication