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