0

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

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

关于我如何实现它的任何帮助?

谢谢!

4

1 回答 1

1

它是一个固定的应用程序组件,可从CWebApplication. 所以你可以通过Yii::app()->session. 您可以在main.php.

'components' => array(
    'session' => array(
        'class' => 'MyCustomSession',
    ),
),

但这可能不是您要解决问题的正确位置。PHP 的会话系统中没有“关闭会话”事件。因此,您无法真正找出用户何时“关闭”他的会话。

可能对您有帮助的afterLogin()可能afterLogout()CWebUser. 与session组件非常相似,您也可以user使用自己的类覆盖组件。在那里,您至少可以掌握每个登录/注销过程并做一些事情。但请注意,不一定总是会发生注销:会话可能会简单地超时,如果它发生,您将不会被挂起。

于 2013-05-01T09:06:09.950 回答