После смены хранилища сессий на БД, наблюдаются проблемы со входом без установки галочки "запомнить меня" (не входит) + регулярные вылеты из ЛК.
Возможно, это только у меня, конечно... Но такое происходит с моей версией 1.4 и с новой версией 1.7
После нескольких часов ковыряния в БД и в коде, выяснилось, что ID сессии постоянно меняется. Из-за этого происходит замусоривание базы,
не проходят сообщения типа setFlash в случае последующего редиректа (сообщения остаются в устаревших ID), и др. чудеса.
Проблема заключается в регулярном вызове regenerateID().
Решил проблему так:
1. Создаем файлик
\protected\components\MyDbHttpSessions.php со следующим содержимым:
- Код: Выделить всё
<?php
class MyDbHttpSessions extends CDbHttpSession
{
public function regenerateID($deleteOldSession=false){
if($deleteOldSession){
}
}
}
?>
2. Правим файл
\protected\config\main-free.php (для платных версий - main.php)
- Код: Выделить всё
$addons['components'] = array(
'session' => array(
'class' => 'CDbHttpSession',
'connectionID' => 'db',
'sessionTableName' => '{{users_sessions}}',
'autoCreateSessionTable' => false, ),
меняем на
- Код: Выделить всё
$addons['components'] = array(
'session' => array(
'class' => 'MyCDbHttpSession',
'connectionID' => 'db',
'sessionTableName' => '{{users_sessions}}',
'autoCreateSessionTable' => false, ),