基于模块的登录和用户级访问系统

时间:2012-11-27 08:15:43

标签: authentication module yii role

我已经实现了基于模块的登录 here 通过update 2方法,它对我来说很好。 现在需要以不同的角色访问此模块, 我按照here

所述实现了对该模块的用户级访问

我将LevelLookUp类添加到EWebUser。 当我尝试现在登录CException

“CWebUser及其行为没有名为”isAdmin“的方法或闭包。”

显示。 它意味着模块仍在使用CWebUser,但我创建了自己的EWebUser并将其放置到module / components / EWebUser.php 和模块配置文件init方法中的代码

$this->setImport(array(
    'bgadmin.models.*',
    'bgadmin.components.*',
));

$this->setComponents(
    array(
        'errorHandler' => array(
            'errorAction' => 'bgadmin/default/error'),
        'user' => array(
            //'class' => 'CWebUser',
            'class' => 'EWebUser',
            'loginUrl' => Yii::app()->createUrl('bgadmin/default/index'),
        )
));

Problem- 1.放置LevelLookUp类的地方 2.为什么模块仍在使用CWebuser而不是EWebUser?

RETRY ------------ 当我改变

$this->setComponents(

Yii::app()->setComponents(

然后它登录EwebUser但不登录我登录但现在有2个问题 1。'expression'=>'Yii::app()->user->isAdmin()'不起作用,但在EwebUser类中它会返回flase。 2.当注销出错时,“属性”BgadminModule.user“未定义。” 注销码是

Yii::app()->user->logout(false);
        $this->redirect(Yii::app()->getModule('bgadmin')->user->loginUrl);

在之前的情况下,注销工作正常。 请帮帮我。

1 个答案:

答案 0 :(得分:0)

当你在模块中调用 $ this-> setComponents()时,实际上你设置了一个新组件 您可以通过模块访问模块的用户组件,您必须编写以下内容 声明

Yii :: app() - > getModule('bgadmin') - > user-> isAdmin()或 的的Yii ::应用程序() - > getModule( 'bgadmin') - >用户>编号

要在您的管理模块中注销,您可以通过这种方式调用它

<强>的Yii ::应用程序() - &GT;用户&GT;注销(假); 如果您使用 $ this-&gt; setComponents()方法,这将正常工作。

如果'class'=&gt; 'EWebUser',不会调用您的类,然后尝试将路径更改为

'class'=&gt; 'application.modules.bgadmin.components.EWebUser',

这适用于您的bgadmin模块