Гарантированный способ потерять сессию в CakePHP 1.2RC3

Как исправить ситуацию я пока не придумал. Видимо, связано с желанием разработчиков улучшить защищенность системы.

Для воспроизведения потребуется либо не очень быстрый сервер, либо сильно нагруженный сервер (хорошо бы еще добавить какой-нибудь хитрый запрос к Модели на выборку с JOIN’ами из большой таблицы — чтоб времени на запрос ощутимо уходило), или клиент на достаточно медленном канале.

Алгоритм следующий:

  1. Запускаем сессию и отдаем пользователю Вид (View) с двумя ссылками, например, на Controller1/action1 и на Controller2/action2
  2. Кликаем по первой ссылке
  3. Не дожидаясь загрузки страницы с видом Controller1/action1, кликаем по второй ссылке
  4. Сессия потеряна

Досконально я не проверял, но по результатам рассмотра файлов с сессиями в директории /tmp, думаю, что AuthComponent или еще какой, например RequestHandler виноваты.

Update: Как и предполагалось, это не бага, а фича для секьюрности. Лечится [вроде бы] сменой установки Security.level (в конфигурационном файле) с ‘high‘ на ‘medium‘.

Автор

Сергей Родовниченко

Родился, учился, работал и все такое. Занимаюсь поддержкой сайтов на Shop-Script, Joomla, Wordpress, Prestashop. А также на самописных движках на базе CakePHP.

4 thoughts on “Гарантированный способ потерять сессию в CakePHP 1.2RC3”

  1. НА low — точно лечится
    Я часа 4 убил так на одном проекте, пока один товарисч не подсказал :) — тоже бывалый…

  2. НА low — точно лечится
    Я часа 4 убил так на одном проекте, пока один товарисч не подсказал :) — тоже бывалый…

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *