我已经开始使用 Yii 框架,我有一个关于 UserIdentity 组件使用的新手问题。
我的应用程序有一个管理模块,它将充当显示到真实站点的内容的后台。此模块有自己的管理员表 tbl_admin_user
。
我想将模块的登录方法(检查该表而不是 tbl_user
)与一般站点之一分开。为此,我假设我需要为模块而不是完整的应用程序实现 UserIdentity 的身份验证方法,如果我错了请更正。
当我覆盖该方法时,我什么也得不到。管理模块使用位于 *protected\components* 的 UserIdentity 而不是它自己的。
有什么建议吗?
最佳答案
您不得导入您的模块标识类。 为此,只需修改扩展 CWebModule 的模块类中的 init 函数,如下所示:
public function init()
{
$this->setImport(array(
'#moduleName#.models.*',
'#moduleName#.components.*',
));
}
因此,您的所有模块组件(以及模型)都将被导入,即您的模块标识类。
注意:这样做,您有 2 个具有相同名称 UserIdentity 的导入类。 如果您的应用程序配置良好,则模块一在模块中必须优先,因为它的目录在 include_path 中的位置。 但是你应该给你的类在你的模块中扩展 CUserIdentity 另一个名字,例如AdminUserIdentity。然后在您的登录操作中,您使用 new AdminUserIdentity($username,$password) 而不是 new UserIdentity($username,$password)。这将使您的代码更清晰。
关于authentication - Yii - 具有自己的 UserIdentity 组件的模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5019606/