我正在为我的应用程序构建身份验证模块,但我不太了解CWebUserCUserIdentity之间的关系。

要将用户ID设置为Yii::app()->user->id,必须在我的UserIdentity类中执行此操作并创建一个方法:

public function getId() {
    return $this->_id;
}


但是要将isAdmin设置为Yii::app()->user->isAdmin,我必须在我的WebUser类中创建一个方法:

function getIsAdmin() {
    $user = $this->loadUser(Yii::app()->user->id);
    return intval($user->user_level_id) == AccountModule::USER_LEVEL_ADMIN;
}


为什么不能仅创建UserIdentity类的方法?这里的分工是什么?

最佳答案

UserIdentity(UI)类类似于ID卡,其中WebUser类是实际人员以及您所了解的所有信息。
UI类通过数据库,Web服务,文本文件等提供身份验证。它使您知道关键属性是什么,并允许您对其进行操作。但是,用户可以为您提供有关他们被允许执行的操作,名称,精细权限等的更多信息。
好,结束隐喻
UI类保存关键信息,因此在询问用户ID时,它将引用用户身份类以获取用户的标识符。
WebUser类中的任何与识别或验证用户无关的内容
清除所有吗?
你的例子
您以getId函数为例,但可以在WebUser上创建该函数以覆盖默认值,即从状态中拉出。
所以不确定在这里的意思。

09-10 09:57