Как сохранить / передать аутентифицированный пользовательский сеанс в другой домен в Laravel - PullRequest
1 голос
/ 27 апреля 2020

У меня есть мульти-арендная сборка с Laravel. Теперь у меня есть системный (основной) веб-сайт

main.com

, где пользователи могут зарегистрироваться.

После регистрации веб-сайт арендатора (субдомена) созданы, и они перенаправляются на новый поддомен

tenantB.main.com .

Конечно, сессия затем удаляется, и они больше не входят в систему. Я пытаюсь сохранить сеанс, но единственное решение, которое я нашел до сих пор, это изменить SESSION_DOMAIN в session.php config на

SESSION_DOMAIN=.main.com

Сеанс затем останется на всех поддоменах, но разные арендаторы не должны совместно использовать их сеансы. С этим изменением, если я войду в tenantB.main.com , я также аутентифицируюсь на tenantA.main.com , что не то, что я хочу.

Другой подход, который я хочу попробовать отправить данные сеанса при перенаправлении на поддомен арендатора (https://laravel.com/docs/7.x/redirects#redirecting -with-flashhed-session-data ):

redirect($this->redirectPath())->with('auth', 'abc')

Но здесь я застрял. Как мне пройти текущий сеанс? Или это совершенно неправильный подход?

1 Ответ

1 голос
/ 27 апреля 2020

Я бы просто использовал повара ie. Информация лучше всего хранится на стороне клиента. Таким образом, клиент несет ответственность за предоставление своей собственной идентификации.

В этом случае ваше промежуточное ПО аутентификации должно проверить, есть ли у пользователя разрешение на доступ к текущему субдомену арендатора.

Скорее всего, laravel уже настроен на использование куки для аутентификации. В этом случае все, что вам нужно будет сделать, - это реализовать собственную защиту!

Auth::extend('tentantAuth', function ($app, $name, array $config) {
    new TenantAuth(Auth::createUserProvider($config['provider']));
});

Класс TenantAuth должен просто реализовать Illuminate\Contracts\Auth\Guard, чтобы его можно было использовать.

Вы можете использовать расширенную аутентификацию, обновив свой файл конфигурации. php для использования драйвера 'tenantAuth'.

Дополнительную информацию можно найти в разделе https://laravel.com/docs/7.x/authentication#adding - заказ охранники

...