Intereting Posts
Использовать параметр в функции, переданной в google.setOnLoadCallback (); Доступ к значению StdClass с помощью двоеточия: защищенный Покажите скидку в процентах от цены продажи на страницах одного продукта для WC 3.0+ cakephp, проверка ошибки Увеличение тайм-аута сеанса в PHP через .htaccess могу ли я передать аргументы моей функции через add_action? yii Фильтр CGridView с отношениями Метод шифрования, который реализован как для php, так и для java? Шаблон WordPress вызывает ошибку 404 Zend_Form: записи базы данных в таблице HTML с флажками AngularJS не будет отображать (анализировать) данные, которые поставляются с $ http.get в Laravel5 Выбор большого количества строк из таблицы базы данных с помощью MySQL В PHP найдите повторяющуюся запись в многомерном массиве, затем суммируйте значения в определенном ключе этого массива php: объявлять аргументы типа функции PHP exec () не выполняет команду для FFmpeg

Обмен сеансом через несколько доменов на одном сервере в PHP

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

Значит, если пользователь, зарегистрированный в любом домене, сможет посещать защищенные страницы других доменов приложения. Пользователь может изменить домен через следующую ссылку или открыть новую вкладку в браузере.

Я просмотрел некоторые статьи и нашел некоторые из нижеперечисленных решений:

  1. Сессия в базе данных. Что делать, если другой пользователь из одной сети с одним и тем же клиентом пользователя?

  2. Передача сообщения iFrame – я где-то слышал, что iFrame отображает загрузку документа, а затем проверка сеанса после показа некоторого содержимого страницы раздражает пользователя.

  3. Запрос CURL с CURLOPT_COOKIEFILE и CURLOPT_COOKIEJAR – я играл с этим, и он работает нормально, но не знаю, является ли он безопасным, а не убийцей производительности.

  4. Единый вход (SSO). Мне нужно некоторое R & D, чтобы реализовать это, и это будет последний вариант.

Пожалуйста, предложите, что делать?

Просто чтобы убедиться, что я не ошибаюсь, вам нужно поделиться сеансом пользователя во всех ваших приложениях.

Как справедливо сказано выше, вы можете использовать 4 варианта выше. Тем не менее, я хотел бы сосредоточиться на первом варианте, который ставит сессию в БД и хотел бы предложить другой вариант, как сохранение сеансов в общем каталоге или сервере.

  1. Сеансы в БД – ответ на ваш вопрос (что, если другой пользователь из той же сети с одним и тем же агентом пользователя попадает?) , У вас будет другое значение идентификатора сеанса, чтобы однозначно идентифицировать каждую строку в таблице. Поэтому нет необходимости беспокоиться об этом. Но недостатком является то, что каждый раз, когда потребуется соединение с БД, и запрос будет запущен, когда сеанс инициализируется, то есть для каждой отдельной страницы.

  2. Сеансы в общем каталоге / сервере. Настройте все свои приложения таким образом, чтобы все приложения хранилища в общем местоположении. Совместное расположение может быть либо каталогом, либо защищенным сервером. Этого легко достичь, используя session_set_save_handler .