我一直在尝试找到登录后调用 CDbHttpSession 的位置,以重写它。
我的问题是我的应用程序中有 3 个产品,每个产品都限制为 X 个同时用户,所以在有人关闭会话或管理员手动从数据库中删除会话之前,我不应该允许任何用户访问这些产品。
关于我如何实现它的任何帮助?
谢谢!
它是一个固定的应用程序组件,可从CWebApplication
. 所以你可以通过Yii::app()->session
. 您可以在main.php
.
'components' => array(
'session' => array(
'class' => 'MyCustomSession',
),
),
但这可能不是您要解决问题的正确位置。PHP 的会话系统中没有“关闭会话”事件。因此,您无法真正找出用户何时“关闭”他的会话。
可能对您有帮助的afterLogin()
可能afterLogout()
是CWebUser
. 与session
组件非常相似,您也可以user
使用自己的类覆盖组件。在那里,您至少可以掌握每个登录/注销过程并做一些事情。但请注意,不一定总是会发生注销:会话可能会简单地超时,如果它发生,您将不会被挂起。