Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

sandykao's avatar

How to use web and api guard at the same time?

My api routes use passport access token

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

routes/api.php

Route::group(['middleware' => 'auth:api'], function () {
    Route::post('/user', 'UserController@apiUser');
}

When post to /api/user, I want to get Auth::guard('web')->user() in this route, but only get Auth::guard('api')->user().

routes/web.php

Route::group(['middleware' => 'auth'], function () {
    Route::post('/user', 'UserController@index');
}

When post to /user, I want to get Auth::guard('api')->user() in this route, but only get Auth::guard('web')->user().

Because I want to log in at the same time. When using the api login to get the access token, can also log in to the web at the same time, or can get the api access token at the same time when log in to the web.

0 likes
2 replies
Yiming's avatar

Try this?

$user = auth('api')->user();
$user = auth('web')->user();
2 likes

Please or to participate in this conversation.