Общие сеансы PHP через домен - PullRequest
7 голосов
/ 24 апреля 2010

Я видел несколько ответов на этот вопрос в SOF, но большинство из них связано с использованием поддоменов, из которых ни один не работал для меня. Распространенным является использование session.cookie_domain, которое, по моему мнению, будет работать только с поддоменами.

Меня интересует решение, которое касается сделок с совершенно разными доменами (и включает в себя возможность поддоменов). К сожалению, сроки выполнения проекта таковы, какие они есть, время не на моей стороне, поэтому я перехожу к опыту и опыту SOF.

Текущее описание проекта должно быть в состоянии войти на один сайт, который в настоящее время хранит только user_id в сеансе, а затем иметь возможность получить это значение, находясь в другом домене в той же среде сервера. Данные сеанса хранятся / извлекаются из базы данных, где session id является первичным ключом.

Я надеюсь найти «легковесное» и «простое» решение для реализации.

Система использует собственный шаблон проектирования Model View Controller, поэтому все запросы (включая разные домены) выполняются с помощью одного сценария начальной загрузки. Использование имени домена в качестве переменной определяет, какой контекст отображать пользователю.

Одним из вариантов, который действительно имеет потенциал, является использование скрытого изображения и использование тега alt для установки user id. Мои первые впечатления предполагают, что это сразу кажется «слишком легким» (если возможно) и пронизано недостатками безопасности. Disscuss

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

Мой третий вариант (и предпочтительный), который я рассмотрел и который пока не рассматривался, - это использование htaccess, чтобы обмануть пользователя, заставляя его думать, что он находится в другом домене, когда перенаправляет infache apache; что-то вроде

www.foo.com/index.php?domain=bar.com&controller=news/categoires/1
но отображается пользователю как
www.bar.com/news/categories/1

foo.com представляет «основной домен сайта», через который проходят все запросы, а bar.com - это то, к чему пользователь обращается. Запрос контроллера диктует страницу и запрашиваемый вид. Это возможно?

Есть ли другие варианты? Плюсы / минусы?

Заранее спасибо !!!

Ответы [ 3 ]

0 голосов
/ 26 апреля 2010

Для удобства всех, кто интересуется этой функциональностью, я не боюсь простого ответа. Google "Single Sign On", и он вернется с технологией и некоторыми решениями.

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

Я успешно внедрил систему для удовлетворения моих требований.

0 голосов
/ 05 марта 2014
  1. Определение основного сервера сеансов (я делаю это в сочетании с memcached)

  2. используйте Ajax / JSON (P) для запроса сеанса с этого сервера, это позволяет вам использовать сеансы в нескольких доменах

  3. Повторно использовать этот сеанс

0 голосов
/ 24 апреля 2010

Задумывались ли вы об использовании session_set_save_handler . Вы можете хранить свои сеансы в базе данных и получать к ним доступ из любого домена.

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