Тонкости Kohana 3.3 ORM Auth и Session

Вместо стандартной инструкции по установке я опишу пару не совсем очевидных тонкостей в работе с сессиями и модулем авторизации с использование базы данных в Kohana 3.3

Session cookies

Для использования сессий необходимо задать salt в botstrap.php:

Cookie::$salt = 'anything-here';

 

Session regeneration

При использовании модуля AuthORM 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 месяца.

Тонкости Kohana 3.3 ORM Auth и Session: 2 комментария

    1. Сам спросил и сам отвечу. Нашел ORM драйвер в ветке 3.0, хотя сам использую 3.3 github. Что бы драйвер работал нужно еще потянуть с той же ветки клас Validate, потому что в 3.3 от этого класса отказались в пользу фильтров, если вдруг кто знает где можно взять драйвер для более новых версий Kohana, подскажите пожалуйста. Вот моя почта Q@milokmurlyka.com

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

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