Мне нужно реализовать решение для одного из моих проектов, где у меня есть несколько доменов + несколько поддоменов, и всем им нужно поделиться одним и тем же сеансом. Все домены и поддомены будут указывать на одно приложение, которое связано с одной базой данных.
Значит, если пользователь, зарегистрированный в любом домене, сможет посещать защищенные страницы других доменов приложения. Пользователь может изменить домен через следующую ссылку или открыть новую вкладку в браузере.
Я просмотрел некоторые статьи и нашел некоторые из нижеперечисленных решений:
Сессия в базе данных. Что делать, если другой пользователь из одной сети с одним и тем же клиентом пользователя?
Передача сообщения iFrame – я где-то слышал, что iFrame отображает загрузку документа, а затем проверка сеанса после показа некоторого содержимого страницы раздражает пользователя.
Запрос CURL с CURLOPT_COOKIEFILE и CURLOPT_COOKIEJAR – я играл с этим, и он работает нормально, но не знаю, является ли он безопасным, а не убийцей производительности.
Единый вход (SSO). Мне нужно некоторое R & D, чтобы реализовать это, и это будет последний вариант.
Пожалуйста, предложите, что делать?
Просто чтобы убедиться, что я не ошибаюсь, вам нужно поделиться сеансом пользователя во всех ваших приложениях.
Как справедливо сказано выше, вы можете использовать 4 варианта выше. Тем не менее, я хотел бы сосредоточиться на первом варианте, который ставит сессию в БД и хотел бы предложить другой вариант, как сохранение сеансов в общем каталоге или сервере.
Сеансы в БД – ответ на ваш вопрос (что, если другой пользователь из той же сети с одним и тем же агентом пользователя попадает?) , У вас будет другое значение идентификатора сеанса, чтобы однозначно идентифицировать каждую строку в таблице. Поэтому нет необходимости беспокоиться об этом. Но недостатком является то, что каждый раз, когда потребуется соединение с БД, и запрос будет запущен, когда сеанс инициализируется, то есть для каждой отдельной страницы.
Сеансы в общем каталоге / сервере. Настройте все свои приложения таким образом, чтобы все приложения хранилища в общем местоположении. Совместное расположение может быть либо каталогом, либо защищенным сервером. Этого легко достичь, используя session_set_save_handler .