Реагировать: сохранить куки при перенаправлении на поддомен - PullRequest
5 голосов
/ 18 июня 2019

Мне нужно перенаправить пользователя после успешной авторизации на его собственный поддомен, например

company.test.com с test.com

Страница авторизации открывается на test.com, и когда я получаюОтвет для успешной аутентификации Я получаю имя субдомена пользователя из базы данных.Поэтому название компании xyz следует перенаправить на xzy.test.com, Эта часть уже выполнена .

Проблема в сеансе пользователя.Я сохраняю аутентифицированные пользовательские данные в Redx, и когда страницы обновляются / перенаправляются на поддомен, они теряют пользовательские данные.

Все, что я могу думать, - это то, что я должен передать аутентифицированному пользователю id вместе с суб-доменом.домен, как xyz.test.com/encrypted-user-id к маршруту, и я получу этот идентификатор пользователя на серверной стороне, расшифрую его и заставлю пользователя войти в систему, не запрашивая пароль снова.

Мой вопрос заключается в том, что ..Есть ли альтернативный способ?Если нет, это реальный способ решить эту проблему

1 Ответ

6 голосов
/ 22 июня 2019

Да, есть альтернативный и более правильный способ решения вашего вопроса.

Я постараюсь ответить на две части: сначала включить cookie-файлы между корневыми и поддоменами, а затем - как это сделать в Laravel.

Сделать куки доступными между корневыми и поддоменами :

При получении заголовков файлов cookie браузер может быть настроен для совместного использования файлов cookie между поддоменами. Это достигается путем добавления домена в заголовок Set-Cookie.

Set-Cookie: user=JohnDoe; domain=testdomain.com

Начиная с RFC-6265 , приведенный выше синтаксис сообщит браузеру, что файлы cookie, установленные на test.com, должны быть доступны для всех поддоменов (т. Е. a.test.com, xyz.test.com). Для более подробного объяснения см. этот ответ здесь, на SO.

Установить файлы cookie, которые будут доступны на поддоменах в Laravel :

Согласно документации Laravel responses функция cookie принимает все аргументы, принятые функцией [setcookie][4] php (см. path и domain аргументы).

Например, для одного можно написать:

$path = '/'; // make cookie available on all paths
$domain = "test.com";  // according to rfc6265 make available on root and subdomains
return $response($content)->cookie($name, $value, $minutes, $path, $domain);

Другой способ для совместного использования всех файлов cookie в корне и поддоменах исходит из фрагмента JacobBennet . Предлагается установить желаемое значение переменной domain в config/session.php. Тогда все (!) куки будут доступны для поддоменов.

Сторона интерфейса (React) не должна делать ничего особенного, кроме «перенаправления».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...