Yii Session:在“yiisession”中添加更多信息

时间:2012-03-12 07:34:30

标签: php session yii

Yii是否有可能在“yiisession”表中添加更多信息。

默认情况下,该表只有“id”,“expire”和“data”列,我想为我自己使用的“userid”添加另一个。

添加列以便我的超级用户可以强制注销任何用户的原因。由于在Yii会话中写入的“id”是加密的。

知道怎么做吗?

(如果不可能解析“数据”列以获得所需的会话值?)

1 个答案:

答案 0 :(得分:2)

您可以创建自己的会话存储类,通过扩展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',
        // ...
    )
    // ...
)