Как настроить laravel/sanctum на несколько доменов

Файл конфигурации .env:

APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:pidZnQTgbIdywrKyRVKXbckM5ZDup49irriT9nzMasE=
APP_DEBUG=true
APP_URL=http://vacation.loc

LOG_CHANNEL=stack

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=vacation
DB_USERNAME=логин
DB_PASSWORD=пароль

BROADCAST_DRIVER=log
CACHE_DRIVER=file
QUEUE_CONNECTION=sync
SESSION_DRIVER=file
SESSION_LIFETIME=120

REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

MAIL_MAILER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS=null
MAIL_FROM_NAME="${APP_NAME}"

AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=

PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_APP_CLUSTER=mt1

MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"

cors.php:

return [
    'paths' => ['api/*'],
    'allowed_methods' => ['*'],
    'allowed_origins' => ['*'],
    'allowed_origins_patterns' => [],
    'allowed_headers' => ['*'],
    'exposed_headers' => [],
    'max_age' => 0,
    'supports_credentials' => false,
];

Всё работает, если запускаем сервер командой php artisan serve. Но если я использую свой локальный домен, то получаю, что пользователь не авторизован.


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

Автор решения: doox911

Для того, чтобы запросы работали на нужном домене, необходимо в файл конфигурации config/sanctum.php в параметр stateful прописать необходимый домен.

Пример:

<?php

return [
    'stateful' => explode(', ', env('SANCTUM_STATEFUL_DOMAINS', 'localhost, 127.0.0.1, my-domain1.loc', 'my-domain2.loc')),
    'expiration' => null,
    'middleware' => [
        'verify_csrf_token' => App\Http\Middleware\VerifyCsrfToken::class,
    ],

];

После внесения изменений необходимо выполнить команду(подгрузить новые настройки) php artisan config:clear.

Подробнее тут.

→ Ссылка