Yii是否有可能在“yiisession”表中添加更多信息。
默认情况下,该表只有“id”,“expire”和“data”列,我想为我自己使用的“userid”添加另一个。
添加列以便我的超级用户可以强制注销任何用户的原因。由于在Yii会话中写入的“id”是加密的。
知道怎么做吗?
(如果不可能解析“数据”列以获得所需的会话值?)
答案 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',
// ...
)
// ...
)