如何在使用批量注销时扩展行为

时间:2014-07-18 16:21:06

标签: php yii yii-components yii-events

我已经在组件文件夹中创建了一个文件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');                       
        }
    }
}

我已经在config/main.php注册了

'behaviors'=>array(
    'class'=>'application.components.applicationBehavior',
),
我会用来在应用程序上进行设置吗?如果我运行控制器以禁用我的应用程序(Maintenance mode),则会以某种方式调用:

public function actionTurnoff()    
{ 
     Yii::app()->setGlobalState('massLogout',true);
     $this->render('turnoff');
}

所有用户都将自动停止,除非我使用用户名的用户:bertho

问题是,当我(用户名:bertho)注销时,我会lose control 进入我的应用程序

如果普通用户(without login)不受此行为影响,我该如何创建代码?

我试图检查条件:

$user = $owner->user->name;

然后:

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

但总是错误:session_regenerate_id(): Session object destruction failed

我该怎么办?

0 个答案:

没有答案