2013-04-30 42 views
0

我一直在尝试找到登录后调用CDbHttpSession的位置,以便重写它。Yii CDbHttpSession,它叫什么名字?

我的问题是我在我的应用程序中有3个产品,并且每个都限制在X个并发用户上,所以我不应该允许任何用户访问这些产品,直到有人关闭会话或管理员手动从D B。

任何帮助我如何实现它?

谢谢!

+0

如果您需要以任何精度控制并发访问,会话不会削减它。 – Jon 2013-04-30 21:17:10

回答

1

这是一个固定的应用程序组件,可从CWebApplication获得。所以你可以通过Yii::app()->session访问会话实例。您可以在main.php中配置您自己的会话组件。

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

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

有什么可以帮到你的,也许afterLogin()afterLogout()方法CWebUser。就像session组件一样,你也可以用你自己的类覆盖user组件。在那里,你至少可以掌握每一个登录/注销过程并做一些事情。但请注意,注销不一定总是会发生:会话可以简单地超时,并且如果它不会被暂停。