Совместное использование сеанса CakePHP между двумя приложениями в одном домене

У меня есть два приложения CakePHP, работающие в одном домене.

Они расположены по адресам localhost:8080/wishlist и localhost:8080/lighthouse.

«Список желаний» и «маяк» — это отдельные приложения CakePHP.

Страница входа находится по адресу localhost:8080/lighthouse, и я хочу, чтобы сеанс, сгенерированный приложением маяка, использовался в приложении списка пожеланий.

Структура каталогов

/htdocs
    /wishlist
        /app
        /config
        ....
    /lighthouse
        /app
        /config
        ....

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

Как я могу разделить сеанс между двумя моими приложениями?


person Amit Yadav    schedule 08.06.2010    source источник
comment
В качестве примечания, ваша структура каталогов может быть /htdocs/wishlist/config, /htdocs/lighthouse/config, /htdocs/cake, /htdocs/vendors. По соглашению это позволит обоим приложениям совместно использовать одну и ту же установку торта и глобальный каталог поставщиков без какой-либо ручной настройки, и оно будет отвечать на одни и те же URL-адреса. Распространенной ошибкой является мнение, что каталоги app нельзя переименовать, но это не так. :)   -  person deizel    schedule 08.06.2010


Ответы (2)


Во-первых, установите Firefox, Firebug и Firecookie. Это добавит вкладку «Cookies» в Firebug, что упростит проверку ваших файлов cookie.

Файлы cookie состоят из нескольких частей: имени, значения, домена, пути, срока действия и т. д. Я полагаю, вас больше всего интересует часть файла cookie «путь».

По умолчанию CakePHP ограничивает путь каждого файла cookie подкаталогом вашего приложения. Например, при посещении /wishlist будет создан файл cookie, но он будет ограничен подкаталогом /wishlist. Когда вы затем перейдете к /lighthouse, предыдущий файл cookie не будет применяться, поэтому, думая, что у вас нет файла cookie/сеанса, создается новый, который ограничен подкаталогом /lighthouse.

Вам нужно изменить путь созданных файлов cookie на /, чтобы они сохранялись во всех подкаталогах. Это должно быть так же просто, как добавить ini_set('session.cookie_path', '/'); в файлы app/config/bootstrap.php обоих приложений.

person deizel    schedule 08.06.2010
comment
Большое спасибо, решение сработало для меня. Я разместил подробности здесь amityadav.name / - person Amit Yadav; 09.06.2010

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

person jbrass    schedule 09.06.2010
comment
Это результат плохого программирования предыдущего программиста. Это были два отдельных приложения, и теперь их хотят объединить. - person Amit Yadav; 09.06.2010