Php 使用massLogout时如何扩展CBehavior

Php 使用massLogout时如何扩展CBehavior,php,yii,yii-components,yii-events,Php,Yii,Yii Components,Yii Events,我在component文件夹中创建了一个文件applicationBehavior.php,如下所示: <?php class applicationBehavior extends CBehavior { public function events() { return array( 'onBeginRequest'=>'massLogout', ); } pub

我在component文件夹中创建了一个文件
applicationBehavior.php
,如下所示:

<?php
class applicationBehavior extends CBehavior
{

    public function events() 
    {
        return array(   
            'onBeginRequest'=>'massLogout',         
        );
    }

    public function massLogout()
    {
        $owner = $this->getOwner();
        if($owner->getGlobalState('massLogout') && ($owner->user->name!=='bertho'))
        {                  
            $owner->user->clearStates();
            $owner->catchAllRequest=array('maintenance','view'=>'index');                       
        }
    }
}
我会用它来做应用程序的设置。如果我运行控制器以禁用我的应用程序(
维护模式
),则会以某种方式调用:

public function actionTurnoff()    
{ 
     Yii::app()->setGlobalState('massLogout',true);
     $this->render('turnoff');
}
所有用户将自动停止,除非我使用用户名的用户:
bertho

现在的问题是,当我(用户名:
bertho
)注销时,我将
失去控制
重新进入我的应用程序

如果普通用户(
未登录
)不受此行为的影响,我应该如何创建代码

我已尝试检查这些条件:

$user = $owner->user->name;
然后:

if($user!='Guest'){
    if($owner->getGlobalState('massLogout') && $user=='bertho'){
        $owner->user->clearStates();
        $owner->catchAllRequest=array('maintenance','view'=>'index');
    }
}
但它总是出错:
会话\u重新生成\u id():会话对象销毁失败

我该怎么办

if($user!='Guest'){
    if($owner->getGlobalState('massLogout') && $user=='bertho'){
        $owner->user->clearStates();
        $owner->catchAllRequest=array('maintenance','view'=>'index');
    }
}