Чтобы создать общую авторизацию для всех поддоменов в Laravel, вам потребуется несколько шагов.
Шаг 1: Настройте поддомены
Сначала вам нужно настроить поддомены для вашего приложения. В файле config/app.php
найдите ключ url
и установите его значение в формате http://{subdomain}.example.com
, где {subdomain}
- это переменная для поддомена. Например, если у вас есть поддомены "admin" и "api", то значение url
будет http://{subdomain}.example.com
.
Шаг 2: Настройка маршрутов
Затем вам нужно настроить маршруты для каждого поддомена. Создайте файл маршрута для каждого поддомена в директории routes/{subdomain}.php
. Например, для поддомена "admin" создайте файл routes/admin.php
, а для поддомена "api" создайте файл routes/api.php
. В каждом из этих файлов маршрута вы можете определить свой набор маршрутов, которые будут доступны для соответствующего поддомена.
Шаг 3: Настройка маршрутизации
Далее вам нужно настроить маршрутизацию для каждого поддомена. В файле app/Providers/RouteServiceProvider.php
найдите метод map()
и добавьте следующий код:
public function map() { $this->mapApiRoutes(); $this->mapWebRoutes(); // Добавьте следующий код $this->mapSubdomainRoutes(); } protected function mapSubdomainRoutes() { $subdomains = ['admin', 'api']; foreach ($subdomains as $subdomain) { Route::middleware('web') ->namespace($this->namespace) ->domain("{$subdomain}." . config('app.domain')) ->group(base_path("routes/{$subdomain}.php")); } }
Этот код будет автоматически подключать файлы маршрутов для каждого поддомена и привязывать их к соответствующим поддоменам.
Шаг 4: Настройка сессий
Чтобы сделать общую авторизацию для всех поддоменов, вам также необходимо настроить сессии. В файле config/session.php
установите значение domain
равным .example.com
. Важно добавить в начало точку перед именем домена, чтобы включить субдомены.
'domain' => '.example.com',
Это позволит разделить сессии между разными поддоменами, что позволит вам использовать одну авторизацию для всех поддоменов.
Шаг 5: Настройка CSRF-токена
Если вы используете защиту CSRF в вашем приложении, вам необходимо настроить CSRF
-токен для работы с поддоменами. В файле app/Http/Middleware/VerifyCsrfToken.php
найдите метод protected function isReading($request)
и добавьте следующий код:
protected function isReading($request) { if (in_array($request->method(), ['HEAD', 'GET', 'OPTIONS'])) { return true; } return starts_with($request->fullUrl(), config('app.url')); }
Это позволит разрешить чтение CSRF-токена с разных поддоменов.
Шаг 6: Общая авторизация
Теперь, когда у вас есть настроенные поддомены, маршруты, сессии и CSRF-токены, вы можете использовать общую авторизацию для всех поддоменов. Laravel по умолчанию использует провайдер аутентификации web
, который уже содержит маршруты и представления для аутентификации. Вам просто нужно убедиться, что вы используете web
-маршруты и маршруты проверки аутентификации для всех ваших поддоменов.
Надеюсь, эта подробная инструкция поможет вам сделать общую авторизацию для всех поддоменов в Laravel.