2013-06-07 2 views
0

Я работаю над своим первым приложением w/CakePHP 2.3, и у меня возникла проблема, когда я могу войти (без ошибок auth), но моя сессия не торчит, так что я отправляется обратно на страницу входа, когда вызывается Auth->redirect(). Я уверен, что мне просто не хватает настройки или что-то неправильно настроено, но я не смог ее найти.CakePHP сеанс обновляется при каждом запросе

# core.php 
# session record is written the the database, but the same record's id changes w/ every request 
Configure::write('Session', array(
    'defaults' => 'database', 
)); 

Configure::write('Security.level', 'medium'); 

Я попытался настраивая различные параметры Session.X, но ничего не сделал никакой разницы. Я использую проверку подлинности Bcrypt со следующими параметрами в моем AppController:

'Auth' => array(
    'authenticate' => array(
    'Blowfish' => array(
     'fields' => array('username' => 'email'), 
     'scope' => array('active' => '1') 
    ), 
), 
    'authorize' => array('Controller'), 
    'loginAction' => array('admin' => false, 'controller' => 'users', 'action' => 'login'), 
    'loginRedirect' => array('admin' => true, 'controller' => 'activities', 'action' => 'index'), 
    'logoutRedirect' => array('admin' => false, 'controller' => 'users', 'action' => 'login'), 
), 

Какой кусок я упускаю?

UPDATE

Понимая, что это происходит только в моем Dev среде, я сравнил мой торт конфигурацию (базы данных, ядро, самозагрузка) и php.ini значение - никаких различий. Я в тупике.

+0

Нет перенаправления, возможно, в users_controller? – kaklon

+0

Нет, перенаправление происходит. –

+0

Что бы это ни стоило, я перенаправляюсь на домашнюю страницу (/), которая направляется на '/ admin/activities/index'. Отладка непосредственно перед фактическим перенаправлением подтверждает, что я должен идти туда, где я ожидаю. –

ответ

2

Holy Headslap, Бэтмен.

Итак, вот в чем проблема. Я храню сессии в базе данных. Где-то каким-то образом (очевидно) автоматизированный процесс изменил поле cake_sessions.data на cake_sessions.DATA. Хотя я просмотрел базу данных тысячу раз, отлаживая это, я заметил, что разница только.

Проблема решена.

Мораль истории: разработчики, не позволяйте названиям полей базы данных расти и меняться.

1

Вам также нужно установить «Сессию» в качестве компонента.

+0

Это там. Вероятно, я должен был включить весь свой массив '$ components' в' AppController' в исходном вопросе, но компонент 'Session' есть. –