【发布时间】:2012-03-12 07:34:30
【问题描述】:
Yii 是否有可能在“yiisession”表中添加更多信息。
默认情况下,该表只有“id”、“expire”和“data”列,我想添加另一个作为“userid”供我自己使用。
添加列的原因,以便我的超级用户可以强制注销任何用户。由于 Yii session 中写入的“id”是加密的。
知道怎么做吗?
(如果无法解析“数据”列以获得所需的会话值,是否可以?)
【问题讨论】:
Yii 是否有可能在“yiisession”表中添加更多信息。
默认情况下,该表只有“id”、“expire”和“data”列,我想添加另一个作为“userid”供我自己使用。
添加列的原因,以便我的超级用户可以强制注销任何用户。由于 Yii session 中写入的“id”是加密的。
知道怎么做吗?
(如果无法解析“数据”列以获得所需的会话值,是否可以?)
【问题讨论】:
您可以创建自己的会话存储类,通过扩展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',
// ...
)
// ...
)
【讨论】: