我有该模块的管理模块和不同的CWebUser(adminuser)。它适用于登录。所以我可以通过不同的用户登录主应用程序和模块。但是当我在模块中调用logout方法时
Yii::app()->getModule('admin')->adminuser->logout();
它也会从模块和主应用程序中退出。
我该怎么办呢?
先谢谢。
答案 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' );
}
}
其余的登录和注销控制器代码相同。 希望能帮助到你。如果没有,请告诉我。