警予。无法从模块注销

时间:2012-12-15 20:02:07

标签: yii yii-components

我有该模块的管理模块和不同的CWebUser(adminuser)。它适用于登录。所以我可以通过不同的用户登录主应用程序和模块。但是当我在模块中调用logout方法时

Yii::app()->getModule('admin')->adminuser->logout();

它也会从模块和主应用程序中退出。
我该怎么办呢? 先谢谢。

1 个答案:

答案 0 :(得分:1)

我认为密钥是stateKeyPrefix,可以用来告诉不同的模块使用不同的会话密钥。 我会将main配置文件user部分。

'user' => [
     'allowAutoLogin' => true,
     **'stateKeyPrefix' => 'YOUR-DEFAULT_',**
     'loginUrl' => array('/login'),
     'class' => 'application.wsi.auth.WSIWebUser',
     'authTimeout' => 3600 * 24 // 1 hour
],

我有管理员模块,我会为您提供AdminModule.php

class AdminModule extends \CWebModule 
{   
      public $defaultController = 'index';

      public function init()
      {
          $this->setImport(array(
             'admin.components.*',
          ));
          $this->layout = 'main';
          \Yii::app()->setComponents(array(
              'authManager' => array(
                   'class' => 'CPhpAuthManager',
                   'authFile' => \Yii::getPathOfAlias('admin.data.auth') .'php',
                   'showErrors' => true,
              ),
              'user' => array(
                   'stateKeyPrefix' => 'admin_',
                   'loginUrl' => \Yii::app()->createUrl('/admin/index/login'),
                   'class' => 'AdminWebUser',
                   'authTimeout' => 3600 * 24 // 1 day
              ),
          ), false);

      }

}

我在components模块中有admin个文件夹,其中包含AdminWebUser类。

class AdminWebUser extends \CWebUser {

    public function getId() {
        return Yii::app ()->user->getState ( 'id' );
    }
    public function getName() {
        return Yii::app ()->user->getState ( 'name' );
    }

    public function getRole() {
        return Yii::app ()->user->getState ( 'role' );
    }

    public function getEmail() {
        return Yii::app ()->user->getState ( 'email' );
    }
}

其余的登录和注销控制器代码相同。 希望能帮助到你。如果没有,请告诉我。