2013-04-30 45 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組件。在那裏,你至少可以掌握每一個登錄/註銷過程並做一些事情。但請注意,註銷不一定總是會發生:會話可以簡單地超時,並且如果它不會被暫停。