Модификация плагина Session

06.02.2013

Итак, плагин session модифицирован следующим образом: $keeper->{session}->get_session возвращает не HASH, а объект session::Session.

Инициализация

$session = $keeper->{session}->get_session

или

$session = $keeper->{session}->get_session( domain => 'some.domain' )

Переменная $session в среде Contenido является глобальной, так что эту инициализацию можно поставить в autohandler или dhandler и далее использовать по усмотрению в любой компоненте.

Атрибуты

Всегда начинаются с символа подчеркивания, не удаляются при процедуре logoff, доступны при прямом обращению к хешу

  • _session_id - уникальный идентификатор сессии. Имеет прокси метод $session->session_id;
  • _timestamp - Unix-time начала сессии;
  • _domain - домен, на который выдана сессионная кука. Выделен в отдельный атрибут, так как в принципе один и тот же проект может выдавать сессии по нескольким доменам.

Методы

  • get [$session->get('key')] - получение значения по ключу "key". Также, как и раньше, можно обратиться напрямую к хешу $session->{'key'};
  • set [$session->set(%hash)] - установка значениий. На вход должен получить HASH - набор пар ключ-значение;
  • delete [$session->delete(@keys)] - удаление ключей. На вход передается список ключей, которые необходимо удалить;
  • session_id [$session->session_id] - прокси-метод для получения id сессии;
  • id [$session->id] - прокси-метод для получения id залогиненного пользователя. Если пользователь не залогинен, возвращает undef;
  • logon [$session->logon( login => 'ivan', passwd => '123456' )] - прокси-метод, обеспечивающий аутентификацию пользователя через плагин users и заполняющий объект сессии значениями из профиля пользователя. Подробности чуть ниже;
  • logoff [$session->logoff] - как видно из названия, обеспечивает выход пользователя из системы. Подробности тоже ниже.

Метод logon

Метод работает при подключенном плагине users. Осуществляет либо проксирование параметров login или email вкупе с паролем в параметре passwd или осуществлять автологин при передаче в метод параметром profile объекта "Профиль пользователя". Примеры:

$session->logon( login => 'ivan', passwd => '123456' );

$session->logon( email => 'a@enter.ru', passwd => '23456' );

$session->logon( profile => $user_profile );

Метод logoff

По умолчанию удаляет из объекта все ключи, не начинающиеся с символа подчеркивания. Можно оградить нужные вам ключи от удаления, передав методу параметр clear. При обязательно этом будут удалены ключи с названиями: id, email, login, name, nick, type, status, ltime, avatar. Если в clear передать ссылку на список названий, то также будут удалены ключи, совпадающие с этим списком. Примеры:

# Полная очистка сессии:
$session->logoff;

# Очистка только дефолтных параметров сессии:
$session->logoff( clear => 1 );

# Очистка дефолтных и дополнительных параметров сессии:
$session->logoff( clear => ['city', 'gender', 'phone'] );

 

Все предыдущие методы, работающие через $keeper->{session}, продолжают функционировать. Кроме того, под работу с новым объектом переписаны модули session::AUTH::FaceBook и session::AUTH::VKontakte с соответствующими им компонентами oAuth-авторизации. На пути session::AUTH::Mailru и session::AUTH::Google.

Данные изменения коснулись пока только utf-8 ветки проекта. Однако, из-за требований проекта zvuki.ru будут перенесены и в koi8-r версию.

Новости

26.04.2017: Теперь и под CentOS
16.06.2015: Установка под Linux (на примере Ubuntu)
8.06.2015: Update конфигов до Perl версии 5.16.xx
3.12.2014: Замена библиотеки Cache::Memcached на Cache::Memcached::Fast
23.10.2014: Срочный апдейт портов
6.02.2013: Модификация плагина Session
15.01.2013: Исправлены два бага в плагине Session

Новости

26.04.2017: Теперь и под CentOS
16.06.2015: Установка под Linux (на примере Ubuntu)
8.06.2015: Update конфигов до Perl версии 5.16.xx
3.12.2014: Замена библиотеки Cache::Memcached на Cache::Memcached::Fast
23.10.2014: Срочный апдейт портов
6.02.2013: Модификация плагина Session
15.01.2013: Исправлены два бага в плагине Session