2

我的 Yii 项目中至少有一个模型需要引用特定的用户 ID。在我的模型 SQL 中,我有类似CONSTRAINT FOREIGN KEY (user_id) REFERENCES User(id). 当我遇到 CUserIdentity 的文档时,我打算继续创建一个用户模型。我不得不承认我很困惑。CUserIdentity 是用户还是与特定用户案例相关联的状态?我想尽可能多地使用 Yii 的内置功能,因为据我了解它们处理了很多与安全相关的问题,而且我知道存在一些srbac处理用户身份验证和注册管理的模块。请指导我正确的方向。(还有一个问题:模型和组件之间的关系是什么?)

4

1 回答 1

6

首先,请继续创建一个User模型,您将需要它。

顺便说一句:CUserIdentity代表“用户是谁”的概念,而User模型代表“关于我的应用程序用户的信息”。CUserIdentity适用于存在多种用户(即访客)的所有情况,而该User模型仅适用于您自己存储有关用户的信息时。诚然,在大多数情况下,两者都适用,这就是造成混乱的原因。

通常,两者之间的关系是CUserIdentity,为了回答诸如“用户是谁”、“用户是否允许访问该资源”等问题,User从数据库中查询模型以获取它需要回答的信息这些问题。这两个概念之间的关系也记录在 Yii 的权威指南中。例如,在对用户进行身份验证后,它将User通过其自己的属性(您必须定义)公开模型上的部分或全部信息。

举一个没有User模型的场景示例,请考虑一个允许您使用 LDAP 用户帐户登录的网站。当CUserIdentity::authenticate调用该方法时,组件将针对 LDAP 服务器验证凭据,并且在成功验证后将再次获取任何其他相关信息并通过其自己的属性公开它。

于 2011-09-18T01:54:30.580 回答