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

标签 authentication module yii php

我已经开始使用 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/

相关文章:

php - 在 model->save() Active Record 之后覆盖

yii - 特拉维斯.ci : "composer requirements could not be resolved" but everything works locally (Yii2)

c# - Hub 中 HttpContext.GetOwinContext() 的等价物是什么?

包含的 PHP + MySQL 登录

java - 如何在亚马逊应用商店发布 Firebase 登录应用程序?

java - 回顾基于 RMI 的身份验证方法

linux - Linux Loadable 和内置模块的区别

python - 有没有办法备份 Python 模块?

python - 为什么 Python 使用模块?

mysql - Yii2,在连接中合并两个事件查询条件