Yii CDbHttpSession,在哪里被称为?

时间:2013-04-30 20:48:38

标签: php session yii

我一直试图找到登录后调用CDbHttpSession的位置,以重写它。

我的问题是我的应用程序中有3个产品,并且每个产品都受限于X个并发用户,所以在有人关闭会话或管理员手动从数据库中删除会话之前,我不应允许任何用户访问这些产品

有关如何实现它的任何帮助?

谢谢!

1 个答案:

答案 0 :(得分:1)

这是CWebApplication提供的固定应用程序组件。因此,您可以通过Yii::app()->session访问会话实例。您可以在main.php

中配置自己的会话组件
'components' => array(
    'session' => array(
        'class' => 'MyCustomSession',
    ),
),

但这可能不是您想要解决问题的正确位置。 PHP的会话系统中没有“关闭会话”事件。所以,当用户“关闭”他的会话时,你无法真正找到答案。

可能对您有所帮助的可能是afterLogin()中的afterLogout()CWebUser方法。与session组件非常相似,您也可以使用自己的类覆盖user组件。在那里,您至少可以掌握每个登录/注销过程并执行某些操作。但请注意,注销并不一定总是发生:会话可以简单地超时,如果不是,你将无法保持。