#cakephp #cakephp-1.3 #fancybox
#cakephp #cakephp-1.3 #fancybox
Вопрос:
У меня есть приложение CakePHP, которое, похоже, завершает мой сеанс одним конкретным действием. У меня есть страница, которая при нажатии на ссылку запускает оверлей Fancybox типа iframe. В этом наложении пользователь заполняет и отправляет форму. Форма отправлена правильно, выполняет свою работу (включая отправку электронного письма), загружает представление об успешном завершении и позволяет мне закрыть наложение, но как только я пытаюсь перейти на любую другую страницу, я отправляюсь на экран входа для повторной аутентификации.
Значение моего Security.level
параметра конфигурации равно medium
, а мое Session.timeout
— 120
, так что это не должно быть проблемой. У кого-нибудь есть идеи, что могло бы это создать?
Спасибо.
Ответ №1:
возможно ли, что ваши вызовы ajax и перенаправления не отправляются в одно и то же место, например www.site.com и site.com ? У меня было это раньше, и я также продолжал выходить из системы.
Комментарии:
1. Этого не должно быть, но я обязательно проверю. Я не думаю, что на самом деле происходит какой-либо ajax (поскольку наложение является iframe, я думаю, что это прямой запрос / ответ), но если это возможная причина, я проверю это. Спасибо.
Ответ №2:
Так что отслеживать это было неинтересно, но я был идиотом. В коде был скрыт некоторый код ранней стадии для обновления пользовательских данных в сеансе аутентификации, который не выполнял то, что должен был делать. Он пытался обновить весь Auth.User
объект напрямую (например, $this->Session->write( 'Auth', $user )
) вместо вызова login
метода.
Как только я изменил Session::write()
код на $this->Auth->login( $user )
, все выстроилось в правильную линию. Хороший справочный материал по этому вопросу на http://milesj.me/blog/read/31/Refreshing-The-Auths-Session.