Yii - 具有自己的UserIdentity组件的模块

Man*_*era 3 php authentication module yii

我已经开始使用Yii框架,我有一个关于UserIdentity组件使用的新问题.

我的应用程序有一个管理模块,它将作为显示在真实网站中的内容的后台.该模块有自己的管理员表tbl_admin_user.

我想tbl_user从一般站点之一分离登录方法(以检查该表而不是)来检查该模块.为此,我假设我需要为模块而不是完整的应用程序实现UserIdentity的authenticate方法,如果我错了,请更正我.

当我覆盖那个方法时,我什么也得不到.管理模块使用位于*protected\components*而不是自己的UserIdentity.

有什么建议吗?

Mat*_*don 6

您不得导入模块标识类.为此,只需修改扩展CWebModule的模块类中的init函数,如下所示:

public function init()
{
    $this->setImport(array(
        '#moduleName#.models.*',
        '#moduleName#.components.*',
    ));
}
Run Code Online (Sandbox Code Playgroud)

因此,将导入所有模块组件(以及模型),即模块标识类.

注意:这样做,您有2个具有相同名称UserIdentity的导入类.如果您的应用程序配置良好,则模块必须在模块中优先,因为其目录在include_path中的位置.但是你应该在你的模块中给你的另一个名字扩展CUserIdentity,例如AdminUserIdentity.然后在您的登录操作中,您使用新的AdminUserIdentity($ username,$ password)而不是新的UserIdentity($ username,$ password).这将使您的代码更清洁.