我正在为我的应用程序构建身份验证模块,但我不太了解CWebUser
和CUserIdentity
之间的关系。
要将用户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
上创建该函数以覆盖默认值,即从状态中拉出。
所以不确定在这里的意思。