Как создать сеанс в PHP, когда в Rails есть сеанс в том же домене? - PullRequest
0 голосов
/ 02 июня 2010

У меня есть приложение Rails на поддомене - xyz.domain.com и приложение PHP на другом поддомене - abc.domain.com

Когда пользователь входит в приложение Rails, я хотел бы дать ему сеанс, чтобы я мог регистрировать определенные события об этом пользователе в приложении PHP, но в той же базе данных приложения Rails. По сути, я бы просто предоставил API, который требует аутентификации.

Как лучше всего это сделать? Я не храню сеанс в базе данных

UPDATE Я должен упомянуть, что цель состоит в том, чтобы разрешить аутентифицированный доступ с сайта PHP к базе данных, которая до сих пор использовалась только приложением Rails. Если пользователь вошел в приложение Rails, я хочу иметь возможность отслеживать любые события, происходящие на сайте PHP, и связывать их с пользователем.

Ответы [ 2 ]

2 голосов
/ 02 июня 2010

Я отвечу, не зная много о Rails.

Вы можете настроить имя файла cookie в php.ini. Между именем сеанса и правильным доменом cookie вы можете создать cookie, который будет использоваться обоими приложениями.

«Сессия» в терминах PHP просто подразумевает файл cookie, значение которого указывает на некоторый набор сохраненных данных в хранилище сеансов. Например, если PHP (используя конфигурацию по умолчанию) видит файл cookie PHPSESSID=2b00042f7481c7b056c4b410d28f33cf, он будет искать файл сеанса, например /tmp/sess_2b00042f7481c7b056c4b410d28f33cf. Файл содержит только вывод serialize($_SESSION).

Таким образом, при совместном использовании сеанса будет использоваться это значение cookie, но ничего более по сути. Вам нужно решить, как поделиться другими значениями, если PHP должен вставлять записи журнала. Некоторые варианты:

  1. Если сеанс PHP пуст, запросите URL-адрес в приложении Rails, в котором указано имя пользователя и другие сведения о сеансе. Убедитесь, что URL доступен только с localhost.
  2. Приравнивает идентификаторы сеансов к именам пользователей / идентификаторам в базе данных, чтобы PHP мог выполнять поиск.
0 голосов
/ 02 июня 2010

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

...