Laravel sanctum как совмещать middleware для авторизованного и неавторизованого по токену пользователя?

Допустим у меня есть маршрут в routes/api.php

/api/example

По этому маршруту есть контент и он отличается в зависимости от того, авторизовался пользователь или нет. Если я защищаю его стандартно через auth:sanctum, то контент по этому маршруту может получить только авторизированый по токену пользователь, все остальные получат 401 ответ сервера. Но тогда мне прийдётся создавать 2 отдельных маршрута, один защищенный, а другой нет, что бы предоставить доступ для неавторизованного пользователя. Вопрос, как можно совместить в одном маршруте контент для авторизованного и неавторизованного пользователя, ведь куки не получается отправить с мобильного приложения.

Route::middleware('auth:sanctum')->post('/example', ExampleController::class );

Ответы (1 шт):

Автор решения: Егор Rmd

Можно использовать мидлвару auth

Route::middleware('auth')->post('/api/example', ExampleController::class );

и внутри контролера проверять через Auth::check();

чтобы это cработало надо в конфигах /app/auth.php

заменить дефолтный guard

'defaults' => [
    // 'guard' => 'web',
    'guard' => 'sanctum',
    'passwords' => 'users',
],
→ Ссылка