Вместо стандартной инструкции по установке я опишу пару не совсем очевидных тонкостей в работе с сессиями и модулем авторизации с использование базы данных в Kohana 3.3
Session cookies
Для использования сессий необходимо задать salt в botstrap.php:
Cookie::$salt = 'anything-here';
Session regeneration
При использовании модуля Auth c ORM driver может возникать ситуация регенерации сессий, что, в том числе, приводит к неконтролируемому росту записей в таблице sessions.
Проблему можно решить с помощью добавления в bootstrap.php:
Cookie::$domain = $_SERVER['SERVER_NAME'];
Важно: будьте аккуратнее с использованием CRSF tokens (Security::token() ) — они тоже используют Session::instance(), а значит и драйвер по умолчанию, что, при определенных обстоятельствах, может приводить к генерации лишних записей в таблицу sessions.
Session conflict
При использовании session Native driver и сторонних библиотек и модулей (например Hybridauth) могут возникать конфликты по причинам:
- невозможность чтения/записи зашифрованной cookie;
- использование сторонними библиотеками session_start();
— что может приводить к ошибке:
Session_Exception [ 1 ]: Error reading session data.
Наиболее простым решением будет использование базы данных для хранение сессий Kohana, однако, есть и другие варианты решения, такие как передача в session_start() текущего $_session_id или замена его в сторонних модулях на Session::instance().
Важно: вышеупомянутая ошибка может встречаться и по причине банальной невозможности записи/чтения данных сессии, например из-за недоступности/недостатка прав на запись в session.save_path (каталог хранения файлов сессий PHP, см. php.ini)
Session lifetime
Срок жизни сессии задается в двух местах:
- application/config/auth.php;
- application/config/session.php;
— для модуля Auth и Session соответственно.
Это означает, что в случае, если session.lifetime задано меньшим, чем auth.lifetime, то пользователь будет разлогинен ранее, чем это предполагалось в auth.php.
Garbage collector
Не стоит забывать про «сборщик мусора» для сессий. Управлять им можно через параметр gc в application/config/session.php, принимающий целочисленное значение и отражающий вероятность вызова garbage collector в 1/gc случаев вызова.
Важно: по умолчанию очищается информация о сессиях старше 1 месяца.
А где взять ORM драйвер ?
Сам спросил и сам отвечу. Нашел ORM драйвер в ветке 3.0, хотя сам использую 3.3 github. Что бы драйвер работал нужно еще потянуть с той же ветки клас Validate, потому что в 3.3 от этого класса отказались в пользу фильтров, если вдруг кто знает где можно взять драйвер для более новых версий Kohana, подскажите пожалуйста. Вот моя почта Q@milokmurlyka.com