Yii Session: добавление дополнительной информации в "yiisession" - PullRequest
1 голос
/ 12 марта 2012

Есть ли возможность в Yii добавить дополнительную информацию в таблицу "yiisession".

По умолчанию в таблице есть только столбцы "id", "expire" и "data", я хочу добавить еще один для "userid" для собственного использования.

Причина добавления столбца, чтобы мой суперпользователь мог принудительно выйти из системы любого пользователя. Поскольку «id», записанный в сеансе Yii, зашифрован.

Есть идеи, как это сделать?

(Если это невозможно, будет нормально проанализировать столбец "data", чтобы получить желаемое значение сеанса?)

1 Ответ

2 голосов
/ 13 марта 2012

Вы можете создать свой собственный класс хранения сеанса, который может выполнять все, что вам нужно, расширив CDbHttpSession и добавив необходимые методы и свойства.Например, добавление столбца id может выглядеть следующим образом:

class MyDbHttpSession extends CDbHttpSession
{
    public function setUserId($userId)
    {
        $db=$this->getDbConnection();
        $db->setActive(true);
        $db->createCommand()->update(
            $this->sessionTableName,
            array('userId'=>$userId), // I asume you added a column 'userId' to your session table
            'id=:id',
            array(':id'=>session_id())
       );
    }
}

Поместите свой класс в каталог компонентов приложения и добавьте его в конфигурацию приложения, установив класс компонента сеанса для новой реализации:

// ...
'components' => array(
    // ...
    'session' => array(
        'class' => 'application.components.MyDbHttpSession',
        // ...
    )
    // ...
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...